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");
これまでのところは良い、これは基本的にAlである長さ2、とのNodeListを返しているためl deviceInfo要素がファイル内にあります。 私が次に行うことは、それぞれの子(deviceId、macAddress、deviceType、deviceClass、location、productionState)の値を取得するために、deviceInfoを繰り返し実行することです。
私は、次の操作を実行しようとした: NodeList list = nodes.item(0).getChildNodes();
その後
System.out.println("First element is "+list.item(0).getTextContent());
これは私に空の文字列を与えています。私はこれを行うにしようとするものの:基本的には、インデックス「0」とインデックス「1」ではなく項目と項目を表示している
System.out.println("First element is "+list.item(1).getTextContent());
を、これは最初の要素の値である印刷「デバイス1」を終了します。
したがって、すべての要素の値を取得するには、インデックス1,3,5,7,9,11を使用します。私は何か間違っていることを知っている。誰でも私を助けてくれますか?
'list'と' children'と 'nodes'の関係は何ですか? –
それはタイプミスでした。子供は実際には「リスト」です。 –