2011-03-26 105 views
0

我正在解析SDcard中的xml文件並將其顯示在textview中。每當我嘗試訪問,什麼都不會顯示使用DOM解析XML

InputStream in = new FileInputStream("/sdcard/jokes.xml"); 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(in); 
doc.getDocumentElement().normalize(); 
NodeList nodeLst = doc.getElementsByTagName("jokes"); 

for (int s = 0; s < nodeLst.getLength(); s++) { 
    Node fstNode = nodeLst.item(s); 
    System.out.println("" + fstNode); 
    if (fstNode.getNodeType() == Node.ELEMENT_NODE) { 
     Element fstElmnt = (Element) fstNode; 
     NodeList fstNmElmntLst = (NodeList) fstElmnt.getChild("item"); 
     Element fstNmElmnt = (Element) fstNmElmntLst.item(0); 
     NodeList fstNm = ((Node) fstNmElmnt).getChildNodes(); 
     System.out.println("Number of joke description : "+ ((Node) fstNm.item(0)).getNodeValue()); 

    } 
} 

這是我從sdcard解析xml文件的代碼。任何人都可以告訴我我犯了什麼錯誤,或者如果你有更好的選擇請讓我知道。

+0

如果沒有顯示,那麼你的循環沒有執行......如果你的循環沒有執行,那麼搜索「笑話」標記失敗.....如果你搜索「笑話」失敗.. 。然後我不知道除非我看到XML輸入 – 2011-03-26 06:25:18

+0

' \t <項目標題= 「Joke1」 描述= 「」> \t <項目標題= 「joke2」 描述= 「」> \t <項title =「joke3」description =「」> \t \t '這是我的xml文件 – RAAAAM 2011-03-26 06:39:47

+0

同時在調試模式下通過代碼時,讓我們知道你得到了什麼。例如,nodeLst長度是多少。 – rajath 2011-03-26 06:43:08

回答

0

嘗試此您的循環:

for (int s = 0; s < nodeList.getLength(); s++) 
{ 
    Node firstNode = nodeList.item(s); 
    NodeList nodes = firstNode.getChildNodes(); 
    for (int i = 0; i < nodes.getLength(); i++) 
    { 
     Node node = nodes.item(i); 
     //print node info 
    } 
} 
0

我覺得你剛纔導入錯誤的類,因爲沒有所謂的「getChild」在org.w3c.dom.Element中的方法。
請輸入「org.w3c.dom.Element;」而不是「導入android.sax.Element;」