Мне нужно получить значения узлов внутри узла. Но я получаю значения одного и того же типа узлов из других узлов.Как получить только узел внутри другого узла в xml с использованием DOM-парсера в Java
Это моя структура 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
ожидаемый выход, когда он получает ChildNodes itshould получить fooditem childnode принадлежность к только утренний тег, и он должен получить от вечернего тега. В течении каждого вечера, а утром он получает все значения из пищевого продукта и снова получает все значения
Я не совсем уверен, что вы хотите. Не могли бы вы изменить свой вопрос, чтобы показать свой текущий результат и ваш желаемый результат? – dbank