My XML is structured like the example below. I'm trying to get the attribute values out of XML using dom4j.
<baz>
<foo>
<bar a="1" b="2" c="3" />
<bar a="4" b="5" c="6" />
</foo>
</baz>
Currently the nodes are stored into a List with the following code:
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;
}
There is a similar but different question here on SO but that is returning a node's value for a known attribute key/value pair using the following code:
Node value = elem.selectSingleNode("val[@a='1']/text()");
In my case, the code knows the keys but doesn't know the values - that's what I need to store. (The above snippet from the similar question/answer also returns a node's text value when I need the attribute value.)
You can also use xpath to get the value of a node attribute -
for (Node n : fooNodes) {
String a = n.valueOf("@a");
String b = n.valueOf("@b");
String c = n.valueOf("@c");
fooNodes.add(new Foo(a, b, c));
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With