Мой 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()");
В моем случае код знает ключи, но не знает значения - это то, что мне нужно сохранить. (Приведенный выше фрагмент аналогичного вопроса/ответа также возвращает текстовое значение узла, когда мне нужно значение атрибута.)