私の XML は以下の例のように構成されています。dom4j を使用して XML から属性値を取得しようとしています。
<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()");
私の場合、コードはキーを認識していますが、値を認識していません。これを保存する必要があります。(同様の質問/回答からの上記のスニペットも、属性値が必要なときにノードのテキスト値を返します。)