2011-08-28 63 views
2

我解析一个XML文件,如下所示:转换#text字符串

<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”?

+1

这是什么语言? – svick

+0

@svick语言是Java – javaPlease42

回答

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(); 
}