我正在解析XML文件,如下所示:
<ROW>
<INDUSTRY_ID>1</INDUSTRY_ID>
<ID>314</ID>
</ROW>
这是我的代码:
NodeList titleList = list.getElementsByTagName("ROW");
Log.w("nodeName is ",titleList.item(0).getChildNodes().item(1).getFirstChild().getNodeName());
Log.w("nodeValue is ",titleList.item(0).getChildNodes().item(1).getFirstChild().getNodeName());
我可以成功获取标签和标签的内容,即我得到“1”和“314”的内容;但是,我从getNodeName()获得了#text。 我也尝试过:
titleList.item(0).getChildNodes().item(1).getFirstChild().getNodeName().toString()
但我还是得到#text。我的问题是如何获得“INDUSTRY_ID”和“ID”?
答案 0 :(得分:2)
您已导航到“文本”节点。文本节点在技术上不具有名称,仅具有(文本)值。你想要这个:
NodeList titleList = list.getElementsByTagName("ROW");
Log.w("nodeName is ",titleList.item(0).getChildNodes().item(1).getNodeName());
Log.w("nodeValue is ",titleList.item(0).getChildNodes().item(3).getNodeName());
但是,这是一种非常不健壮的访问元素节点和值的方法,因为它依赖于空白格式。使用Xpath检索所需元素的列表并访问其各自的名称和值
XPath xp = XPathFactory.newInstance();
NodeList elements = (NodeList) xp.evaluate(doc, "//ROW/*", XPathConstants.NODESET);
for(int i=0; i < elements.getLength(); ++i) {
String name = elements.itemt(i).getNodeName();
String value = elements.itemt(i).getTextContent();
}