Hallo zusammen,
ich bin gerade dabei mittels XPath auf die Attribute und Elemente eines XML Dokuments zuzugreifen.
Hier ein Beispiel für für ein XML-File:
So. Möchte ich nun auf die einzelnen Datenpunkte zugreifen. Dies mache ich das wie folgt:
Hier erhalte ich dann alle Werte zwischen den Elementen 2 und 5, was auch funktioniert.
Wenn ich allerdings folgendes XML Format vorliegen habe:
Dann würde ich von jedem Element im XML-Dokument "DataObject" die Datenpunkte aus dem Bereich bekommen.
Also habe ich dann eine lange Liste von Datenpunkten wo ich ja nicht weiss von welchem "DataObject" die jeweiligen werte sind.
So nun meine Frage:
1. Wisst ihr wie ich mit XPath dieses Problem lösen könnte?
Ich stelle mir folgendes vor:
Suche für jedes XML-Element "DataObject" die Datenpunkte heraus.
Ich hoffe ihr versteht in etwa mein Problem und wisst worauf ich hinaus möchte :/
ich bin gerade dabei mittels XPath auf die Attribute und Elemente eines XML Dokuments zuzugreifen.
Hier ein Beispiel für für ein XML-File:
Java:
<DataObject name="aName">
<ASubObject name ="anotherName">
...
</ASubObject>
<AnotherSubObject>
<Measurement>
<DataPoints>
<Point c="0"/>
<Point c="0.5" />
<Point c="1" />
<Point c="1.5" />
<Point c="2" />
<Point c="2.5" />
<Point c="3." />
<Point c="3.5" />
<Point c="4" />
<Point c="4.5" />
<Point c="5" />
<Point c="5.5" />
<Point c="6" />
<Point c="6.5" />
</DataPoints>
</Measurement>
</AnotherSubObject>
</DataObject>
So. Möchte ich nun auf die einzelnen Datenpunkte zugreifen. Dies mache ich das wie folgt:
Java:
XPathExpression expr = null;
expr = xpath.compile("/DataObject/AnotherSubObject/Measurement/DataPoints/Point[position() >= 2 and (position() <= 5)]/@c");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeName());
}
Wenn ich allerdings folgendes XML Format vorliegen habe:
Java:
<DataObject name="aName">
<ASubObject name ="anotherName">
...
</ASubObject>
<AnotherSubObject>
<Measurement>
<DataPoints>
<Point c="0"/>
...
<Point c="6.5" />
</DataPoints>
</Measurement>
</AnotherSubObject>
</DataObject>
<DataObject name="aSecondName">
<ASubObject name ="anotherName">
...
</ASubObject>
<AnotherSubObject>
<Measurement>
<DataPoints>
<Point c="0"/>
...
<Point c="9.5" />
</DataPoints>
</Measurement>
</AnotherSubObject>
</DataObject>
Dann würde ich von jedem Element im XML-Dokument "DataObject" die Datenpunkte aus dem Bereich bekommen.
Also habe ich dann eine lange Liste von Datenpunkten wo ich ja nicht weiss von welchem "DataObject" die jeweiligen werte sind.
So nun meine Frage:
1. Wisst ihr wie ich mit XPath dieses Problem lösen könnte?
Ich stelle mir folgendes vor:
Suche für jedes XML-Element "DataObject" die Datenpunkte heraus.
Ich hoffe ihr versteht in etwa mein Problem und wisst worauf ich hinaus möchte :/
Zuletzt bearbeitet: