Моят XML е структуриран като примера по-долу. Опитвам се да извадя стойностите на атрибутите от XML с помощта на dom4j.
<baz>
<foo>
<bar a="1" b="2" c="3" />
<bar a="4" b="5" c="6" />
</foo>
</baz>
В момента възлите се съхраняват в списък със следния код:
public List<Foo> getFoo() {
String FOO_XPATH = "//baz/foo/*";
List<Foo> fooList = new ArrayList<Foo>();
List<Node> fooNodes = _bazFile.selectNodes(FOO_XPATH);
for (Node n : fooNodes) {
String a = /* get attribute a */
String b = /* get attribute b */
String c = /* get attribute c */
fooNodes.add(new Foo(a, b, c));
}
return fooNodes;
}
Има подобен, но различен въпрос тук на SO, но той връща стойността на възел за известна двойка ключ/стойност на атрибут, използвайки следния код:
Node value = elem.selectSingleNode("val[@a='1']/text()");
В моя случай кодът знае ключовете, но не знае стойностите - това е, което трябва да съхраня. (Горният фрагмент от подобен въпрос/отговор също връща текстовата стойност на възел, когато имам нужда от стойността на атрибута.)