使用DOM解析XML

问题描述:

我正在解析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 \t \t \t \t '这是我的xml文件 – RAAAAM 2011-03-26 06:39:47

+0

同时在调试模式下通过代码时,让我们知道你得到了什么。例如,nodeLst长度是多少。 – rajath 2011-03-26 06:43:08

尝试此您的循环:

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 
    } 
} 

我觉得你刚才导入错误的类,因为没有所谓的“getChild”在org.w3c.dom.Element中的方法。
请输入“org.w3c.dom.Element;”而不是“导入android.sax.Element;”