У меня есть сильфона XML:синтаксического анализа XML с помощью DOM Java
<modelingOutput>
<listOfTopics>
<topic id="1">
<token id="354">wish</token>
</topic>
</listOfTopics>
<rankedDocs>
<topic id="1">
<documents>
<document id="1" numWords="0"/>
<document id="2" numWords="1"/>
<document id="3" numWords="2"/>
</documents>
</topic>
</rankedDocs>
<listOfDocs>
<documents>
<document id="1">
<topic id="1" percentage="4.790644689978203%"/>
<topic id="2" percentage="11.427632949428334%"/>
<topic id="3" percentage="17.86913349249596%"/>
</document>
</documents>
</listOfDocs>
</modelingOutput>
Ι Хотите разобрать этот XML-файл и получить идентификатор темы и процент от ListofDocs
Первый способ - получить весь элемент документа из xml, а затем проверить, является ли узел grandfather ListofDocs. Но документ элемента существует в rankedDocs и в listOfDocs, поэтому у меня есть очень большой список.
Так что интересно, существует ли лучшее решение для синтаксического анализа этого xml-кода, исключающего if?
Мой код:
public void parse(){
Document dom = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xml));
dom = db.parse(is);
Element doc = dom.getDocumentElement();
NodeList documentnl = doc.getElementsByTagName("document");
for (int i = 1; i <= documentnl.getLength(); i++) {
Node item = documentnl.item(i);
Node parentNode = item.getParentNode();
Node grandpNode = parentNode.getParentNode();
if(grandpNode.getNodeName() == "listOfDocs"{
//get value
}
}
}
Да, я знаю. Интересно, существует ли лучшее решение в dom? – Jimmysnn