Ich möchte XML-Daten mit XPath in Java lesen, daher kann ich für die gesammelten Informationen XML nicht gemäß meinen Anforderungen analysieren.
Folgendes möchte ich tun:
Holen Sie sich eine XML-Datei online über ihre URL und analysieren Sie sie dann mit XPath. Ich möchte zwei Methoden darin erstellen. Zum einen gebe ich eine bestimmte Knotenattribut-ID ein und erhalte als Ergebnis alle untergeordneten Knoten. Zum anderen möchte ich nur einen bestimmten untergeordneten Knotenwert abrufen
<?xml version="1.0"?>
<howto>
<topic name="Java">
<url>http://www.rgagnonjavahowto.htm</url>
<car>taxi</car>
</topic>
<topic name="PowerBuilder">
<url>http://www.rgagnon/pbhowto.htm</url>
<url>http://www.rgagnon/pbhowtonew.htm</url>
</topic>
<topic name="Javascript">
<url>http://www.rgagnon/jshowto.htm</url>
</topic>
<topic name="VBScript">
<url>http://www.rgagnon/vbshowto.htm</url>
</topic>
</howto>
Im obigen Beispiel möchte ich alle Elemente lesen, wenn ich über @name suche, und auch eine Funktion, in der ich nur die URL von @name 'Javascript' möchte, gibt nur ein Knotenelement zurück.
Antworten:
Sie brauchen etwas in dieser Richtung:
Anschließend rufen Sie die
expr.evaluate()
Übergabe des in diesem Code definierten Dokuments und des erwarteten Rückgabetyps auf und wandeln das Ergebnis in den Objekttyp des Ergebnisses um.Wenn Sie Hilfe bei bestimmten XPath-Ausdrücken benötigen, sollten Sie diese wahrscheinlich als separate Fragen stellen (es sei denn, dies war Ihre Frage an erster Stelle - ich habe Ihre Frage als Verwendung der API in Java verstanden).
Bearbeiten: (Antwort auf Kommentar): Mit diesem XPath-Ausdruck erhalten Sie den Text des ersten URL-Elements unter PowerBuilder:
Damit erhalten Sie die zweite:
Sie erhalten das mit diesem Code:
Wenn Sie nicht wissen, wie viele URLs sich in einem bestimmten Knoten befinden, sollten Sie lieber Folgendes tun:
Und dann die NodeList durchlaufen.
quelle
Sie können dies versuchen.
XML-Dokument
Speichern unter
employees.xml
.Parser-Klasse
Die Klasse hat folgende Methoden
Quellcode
quelle
get
Methoden. Nur die XPath-Zeichenfolge ändert sich und der größte Teil des restlichen Codes bleibt gleich. Möglicherweise reicht eine einzige getValuesForXpath () -Methode aus.Erste Schritte Beispiel:
XML-Datei:
Java-Code:
quelle
Hier ist ein Beispiel für die Verarbeitung von xpath mit vtd-xml ... für die Hochleistungs-XML-Verarbeitung ist es unübertroffen. Hier ist ein kürzlich veröffentlichter Artikel zu diesem Thema. Verarbeiten von XML mit Java - Ein Leistungsbenchmark
quelle
Wenn Sie eine XML wie unten haben
und wollte die folgende xml extrahieren
Der folgende Code hilft dabei, dasselbe zu erreichen
Nun, wenn Sie nur die XML wie unten wollen
Sie müssen das ändern
String xpathStr = "//Envelope//Header";
zuString xpathStr = "//Envelope//Header/*";
quelle
Dies zeigt Ihnen, wie es geht
DOM
Nodes
mitXPath
Nodes
.Wir werden den Code mit der folgenden Anweisung aufrufen
In unserem Fall möchten wir einige
creatorNames
aus einembook.xml
using"//book/creators/creator/creatorName"
as xpath drucken, umprintNode
auf jedem Knoten eine Aktion auszuführen , die mit dem übereinstimmtXPath
.Vollständiger Code
Druckt
Zum
book.xml
quelle
Um die hervorragende Antwort von @bluish und @Yishai zu erweitern, erfahren Sie hier, wie die NodeLists und Node-Attribute Iteratoren unterstützen, dh die
for(Node n: nodelist)
Schnittstelle.Verwenden Sie es wie:
und
Der Code:
quelle
Lesen Sie die XML-Datei mit XPathFactory
SAXParserFactory
undStAX (JSR-173)
.Mit XPath erhalten Sie Knoten und seine untergeordneten Daten.
XML-Dokument
Ausgabe für den angegebenen XPathExpression:
Siehe diesen Link für unsere eigene Implementierung von
NamespaceContext
quelle