我很難從使用XPath的XML文件獲取XML值。 XML文件有以下模式:使用XPath檢索XML元素
<devicesInfo>
<deviceInfo>
<deviceId>device1</deviceId>
<macAddress>00:21:85:C9:19:A4</macAddress>
<deviceType>deviceType1</deviceType>
<deviceClass>/Server/SSH/Linux/</deviceClass>
<location>location1</location>
<productionState>Decommissioned</productionState>
</deviceInfo>
<deviceInfo>
<deviceId>device2</deviceId>
<macAddress>00:21:85:C9:19:F5</macAddress>
<deviceType>deviceType1</deviceType>
<deviceClass>/Server/SSH/Linux/</deviceClass>
<location>location1</location>
<productionState>Decommissioned</productionState>
</deviceInfo>
</devicesInfo>
我試圖做的是首先創建一個自定義的類的實例,把我所造的,其中包含了以下方法:
public NodeList getNodesList(String xmlQuery) throws XPathExpressionException {
NodeList nodes = null;
try {
nodes = (NodeList) xPath.evaluate(xmlQuery, doc, XPathConstants.NODESET);
} catch (XPathExpressionException ex) {
throw ex;
}
return nodes;
}
然後,此方法被調用查詢:
NodeList nodes = xmlHandler.getNodesList("/devicesInfo/deviceInfo");
到目前爲止好,因爲這是返回節點列表長度爲2,這基本上是人l文件中的deviceInfo元素。 接下來我要做的是遍歷每個deviceInfo以獲取其子元素(deviceId,macAddress,deviceType,deviceClass,location,productionState)的值。
我試着做到以下幾點: NodeList list = nodes.item(0).getChildNodes();
然後
System.out.println("First element is "+list.item(0).getTextContent());
這給了我一個空字符串。雖然當我嘗試這樣做:
System.out.println("First element is "+list.item(1).getTextContent());
它基本上顯示與索引「1」的項目,而不是項目與索引「0」,這結束了打印「DEVICE1」,這是第一個元素的值。
所以爲了得到所有元素的值,我會使用1,3,5,7,9,11的索引。我知道我做錯了什麼。任何人都可以幫助我嗎?
'list'和'children'和'nodes'之間的關係是什麼? – 2012-01-12 18:35:26
這是一個錯字。兒童實際上是「名單」。 – 2012-01-12 18:49:44