Erste Attribut-Wert von Knoten mit dom4j
Meine XML-strukturiert ist, wie das Beispiel unten. Ich versuche, die Werte der attribute aus XML mittels dom4j.
<baz>
<foo>
<bar a="1" b="2" c="3" />
<bar a="4" b="5" c="6" />
</foo>
</baz>
Derzeit die Knoten werden in einer Liste gespeichert, mit dem folgenden 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;
}
Es ist eine ähnliche, aber doch andere Frage hier SO, aber das ist wieder ein Knoten mit dem Wert für eine bekannte Attribut-Schlüssel/Wert-paar mit dem folgenden code:
Node value = elem.selectSingleNode("val[@a='1']/text()");
In meinem Fall, den code kennt den Schlüssel, weiß aber nicht die Werte - das ist es, was ich brauche, um zu speichern. (Der obige Ausschnitt aus dem ähnlichen Frage/Antwort-gibt auch einen Knoten text Wert, wenn ich den Wert des Attributs.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zum cast der
Node
zuElement
und verwenden Sie dann dieattribute
oderattributeValue
Methoden:Grundsätzlich immer der Wert des Attributs "alle Knoten" nicht sinnvoll, da ein bestimmter node-Typen (Attribute, text-Knoten) nicht haben Attribute.
Ich glaube, Sie brauchen, um zu konvertieren Knoten in element dann nur seine Werke gut.
Können Sie auch xpath verwenden, um den Wert von einem Knoten-Attribut -