2011-11-25 3 views
1

xml 파일에서 내 BlackBerry 앱의 데이터를 가져오고 싶습니다. 나는 reseach하고 kxml2를 사용하는 것이 최선의 선택임을 알아 냈습니다. 그러나 Blackberry에서 예제 코드를 찾을 수 없습니다. kxml2.jar을 열면 xmlParser와 kxmlParser가 표시됩니다. 어느 것을 사용해야합니까?kxml2는 블랙 베리의 xml 파일을 구문 분석합니다.

kxml2 사용법을 명확하게 설명 할 수 있습니까?

답변

1

정상적인 XML 파싱과의 ListField 샘플에 표시하는 것은 여기에 ..

public class xmlparsing extends UiApplication implements ListFieldCallback, FieldChangeListener 
{ 

public static void main(String[] args) 
{ 
xmlparsing app = new xmlparsing(); 
app.enterEventDispatcher(); 
} 


public long mycolor ; 
Connection _connectionthread; 
private static ListField _list; 
private static Vector listElements = new Vector(); 
public MainScreen screen = new MainScreen(); 
VerticalFieldManager mainManager; 
VerticalFieldManager subManager; 



public xmlparsing() 
{ 
super(); 
pushScreen(screen); 

final Bitmap backgroundBitmap = Bitmap.getBitmapResource("blackbackground.png"); 

mainManager = new VerticalFieldManager(Manager.NO_VERTICAL_SCROLL |  Manager.NO_VERTICAL_SCROLLBAR) 
{ 

public void paint(Graphics graphics) 
{ 
graphics.drawBitmap(0, 0, Display.getWidth(),Display.getHeight(),backgroundBitmap, 0, 0); 

super.paint(graphics); 
} 

}; 

subManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL | Manager.VERTICAL_SCROLLBAR ) 
{ 
protected void sublayout(int maxWidth, int maxHeight) 
{ 
int displayWidth = Display.getWidth(); 
int displayHeight = Display.getHeight(); 

super.sublayout(displayWidth, displayHeight); 
setExtent(displayWidth, displayHeight); 
} 
}; 


screen.add(mainManager); 

_list = new ListField() 

{ 

public void paint(Graphics graphics) 

{ 
graphics.setColor((int) mycolor); 
super.paint(graphics); 

} 

}; 
mycolor = 0x00FFFFFF; 
_list.invalidate(); 
_list.setEmptyString("* Feeds Not Available *", DrawStyle.HCENTER); 
_list.setRowHeight(50); 
_list.setCallback(this); 
mainManager.add(subManager); 
listElements.removeAllElements(); 
_connectionthread = new Connection(); 
_connectionthread.start(); 
} 


protected boolean navigationClick(int status, int time) 
{ 
try 
{ 
//navigate here to another screen if you need. 
} 
catch(Exception e) 
{ 
System.out.println("Exception:- : navigationClick() "+e.toString()); 
} 
return true; 
} 



private class Connection extends Thread 
{ 
public Connection() 
{ 
super(); 
} 

public void run() { 
Document doc; 
StreamConnection conn = null; 
InputStream is = null; 
try { 

conn = (StreamConnection)  Connector.open("http://timesofindia.feedsportal.com/c/33039/f/533917/index.rss"+";deviceside=true"); 

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
docBuilderFactory.setIgnoringElementContentWhitespace(true); 
docBuilderFactory.setCoalescing(true); 
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
docBuilder.isValidating(); 
is = conn.openInputStream(); 
doc = docBuilder.parse(is); 
doc.getDocumentElement().normalize(); 
NodeList list = doc.getElementsByTagName("title"); 
for (int i = 0; i < list.getLength(); i++) { 
Node textNode = list.item(i).getFirstChild(); 
listElements.addElement(textNode.getNodeValue()); 
} 

} catch (Exception e) { 
System.out.println(e.toString()); 
} finally { 
if (is != null) { 
try { is.close(); 
} catch (IOException ignored) {} 
} if (conn != null) { 
try { conn.close(); } 
catch (IOException ignored) {} 
} } UiApplication.getUiApplication().invokeLater(new Runnable() { 
public void run() { 
_list.setSize(listElements.size()); 
subManager.add(_list); 
screen.invalidate(); 
} 
}); 
} 

} 


public void drawListRow(ListField list, Graphics g, int index, int y, int w) 
{ 
String tes = (String)listElements.elementAt(index); 
int yPos = 0+y; 
g.drawLine(0, yPos, w, yPos); 
g.drawText(tes, 5, 15+y, 0, w); 
} 


public Object get(ListField list, int index) 
{ 
return listElements.elementAt(index); 
} 
public int indexOfList(ListField list, String prefix, int string) 
{ 
return listElements.indexOf(prefix, string); 
} 
public int getPreferredWidth(ListField list) 
{ 
return Display.getWidth(); 
} 
public void insert(String toInsert, int index) { 
listElements.addElement(toInsert); 
} 

public void fieldChanged(Field field, int context) { 


} 
} 

Full Project가 여기에있다 .. 기본에서이 너무 복잡 가야하지 않습니다.