dom4j.Node обрабатывать файлы xml, и у меня была проблема с Map-подобными структурами. Я следовал структуры документа:dom4j.Node итерации карт элементов
<Party>
<Identifier>1113ddbed7b54890abfe2f8c9754d689</Identifier>
<Address>
</Address>
<Contact>
<ContactInfo>
<Key>IPS</Key>
<Value>null</Value>
<Key>keyTwo</Key>
<Value>1234</Value>
(...)
</ContactInfo>
</Contact>
</Party>
И моя цель состоит в том, чтобы получить значение для keyTwo элемента. Как получить этот элемент с гибким, не жестко-кодированным способом?
Моя первая мысль была что-то вроде этого:
//parent node is father element
Node parentDocument = parentNode.selectSingleNode("ContactInfo");
List<Node> nodesKeys = contactNode.selectNodes("Key");
List<Node> nodesValues = contactNode.selectNodes("Value");
for(int i=0; i<nodesKeys.size(); i++){
if(nodesKeys.get(i).selectSingleNode("Key").equals("keyTwo")){
return nodesValues.get(i);
}
}
Но я не уверен, если это хороший подход, особенно если список ключей и значений будет в правильном порядке.
Каков размер xml-файл? –
Не большой, что-то вроде 1-2 сотен строк – Mazeryt
, если у вас есть файл bigfile> некоторые мегабайты, вы можете комбинировать Xpath + Dom4j и потоковые узлы, каждый анализируемый узел должен быть отделен от дерева дерева после обработки, чтобы освободить RAM. –