Имеется xml с множеством элементов. Некоторые элементы имеют одинаковое название но дочерние элементы могу отличаться.
Структура xml примерно следующая:
<tag1>
<tag2>data1</tag2>
<tag3>data2</tag3>
<tag4>
<tag5>
<tag6>value1</tag6>
<tag7>value2</tag7>
<tag8>value3</tag8>
<tag9>value4</tag9>
<tag10>value5</tag10>
</tag5>
<tag5>
<tag6>value6</tag6>
<tag7>value7</tag7>
<tag8>value8</tag8>
<tag9>value9</tag9>
<tag10>value10</tag10>
</tag5>
</tag4>
</tag1>
Необходимо получить значение tag9 если tag10 удовлетворяет определенному условию
Код java:
try {
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = db.parse(new File("someXML.xml"));
Element root = doc.getDocumentElement();
NodeList tagFiveNodeList = root.getElementsByTagName("tag5");
for (int i = 0; i < tagFiveNodeList.getLength(); i++) {
Node tagFiveNode = tagFiveNodeList.item(i);
NodeList tagFiveChildNodes = tagFiveNode.getChildNodes();
for (int j = 0; j < tagFiveChildNodes.getLength(); j++) {
Node tagFiveChildNode = tagFiveChildNodes.item(j);
// проверка условия
if (tagFiveChildNode.getTextContent().contains("Some Text")) {
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
После проверки на содержание в любом из дочерних тегов определенного текста я хочу получить значение другого тега из этого же списка дочерних тегов.
Как мне это сделать?
Необходимо выполнить приведение Node к Element
Element tagFiveNode = (Element)tagFiveNodeList.item(i);
А потом использовать метод getElementsByTagName
if (tagFiveNode.getElementsByTagName('tag10').item(0).getTextContent()....)
value = tagFiveNode.getElementsByTagName('tag9').item(0).getTextContent();
Это при условии, что такие узлы существуют. Если они могут отсутствовать, то нужно еще проверить размер коллекции, возвращаемой методом getElementsByTagName
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости