ノード内のノード値を取得する必要があります。しかし、他のノードから同じノードタイプの値を取得することになります。
これは私のxml構造です(サンプル)
<Hello>
<Morning>
<hr>8</hr>
<min>12</min>
<sec>25</sec>
<Food>
<fooditem>
<main>Burger</main>
<drink>milk</drink>
<fruit>banana</fruit>
</fooditem>
<fooditem>
<main>Toast</main>
<drink>butter milk</drink>
<fruit>banana and apple</fruit>
</fooditem>
</Food>
</Morning>
<Evening>
<hr>15</hr>
<min>12</min>
<sec>25</sec>
<Food>
<fooditem>
<main>Burger</main>
<drink>milk</drink>
<fruit>banana</fruit>
</fooditem>
</Food>
</Evening>
<Evening>
<hr>15</hr>
<min>12</min>
<sec>25</sec>
<Food>
<fooditem>
<main>Burger</main>
<drink>milk</drink>
<fruit>banana</fruit>
</fooditem>
<fooditem>
<main>Burger</main>
<drink>milk</drink>
<fruit>banana</fruit>
</fooditem>
</Food>
</Evening>
<Evening>
<hr>15</hr>
<min>12</min>
<sec>25</sec>
<Food>
<fooditem>
<main>Burger</main>
<drink>milk</drink>
<fruit>banana</fruit>
</fooditem>
</Food>
</Evening>
</Hello>
問題は、XML から値を取得できることです。しかし、私のコードが行うことは、他のすべてのノードからすべての食品の値を取得することです。朝の食事の値を取得し、次に夕方、次に夕方の値を順番に取得する必要があります。
私のコード
File fXmlFile = new File("c://food.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("fooditem");
System.out.println("----------------------------");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList .item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
System.out.println("main: " + eElement.getElementsByTagName("main").item(0).getTextContent());
System.out.println("drink: " + eElement.getElementsByTagName("drink").item(0).getTextContent());
System.out.println("fruit: " + eElement.getElementsByTagName("fruit").item(0).getTextContent());
}
}
出力: 現在:
Burger
milk
banana Toast
butter milk
banana and apple
Burger
milk
banana
Burger
milk
banana
Burger
milk
banana
Burger
milk
banana Toast
butter milk
banana and apple
Burger
milk
banana
Burger
milk
banana
Burger
milk
banana
Burger
milk
banana Toast
butter milk
banana and apple
Burger
milk
banana
Burger
milk
banana
Burger
milk
banana
期待される出力:
Burger
milk
banana
Toast
butter
milk
banana and apple
Burger
milk
banana
Burger
milk
banana
Burger
milk
banana
期待される出力は、モーニング タグのみに属する fooditem 子ノードを取得する必要があり、イブニング タグから取得する必要がある子ノードを取得する場合です。毎晩と朝の現在では、食品からすべての値を取得し、再びすべての値を取得します