使用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文件的代码。任何人都可以告诉我我犯了什么错误,或者如果你有更好的选择请让我知道。
答
尝试此您的循环:
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;”
如果没有显示,那么你的循环没有执行......如果你的循环没有执行,那么搜索“笑话”标记失败.....如果你搜索“笑话”失败.. 。然后我不知道除非我看到XML输入 – 2011-03-26 06:25:18
' \t \t \t \t \t '这是我的xml文件 –
RAAAAM
2011-03-26 06:39:47
同时在调试模式下通过代码时,让我们知道你得到了什么。例如,nodeLst长度是多少。 – rajath 2011-03-26 06:43:08