2011-08-28 30 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(); 
}