Frage

Ich bin mit JDOM zur Zeit für einige einfache XML-Analyse zu tun, und es scheint, wie Art sicher ist nichts - ich hatte ein ähnliches Problem mit den integrierten Java DOM-Parser verwenden, nur mit viel mehr API durch waten

Zum Beispiel nimmt XPath.selectNodes eine Object als Argument und gibt eine rohe Liste, die nur fühlt sich ein wenig Java 1.1

Gibt es generic-ized XML und XPath-Bibliotheken für Java, oder gibt es einen Grund, warum es ist einfach nicht möglich, XPath-Abfragen in einer typsichere Art und Weise zu tun?

War es hilfreich?

Lösung

Wenn Sie mit CSS-Selektoren auf HTML vertraut sind, kann es gut sein, dass zu wissen, Jsoup unterstützt XML als auch.


Aktualisieren : OK, dass die scheinbar eine downvote sehr umstrittene Antwort gegeben wurde. Es kann jedoch leichter zu sein, am Ende und weniger ausführlich als XPath, wenn alles, was Sie wollen, ist Knotenwert auszuwählen. Die Jsoup API ist nämlich sehr glatt. Lassen Sie uns ein bisschen mehr konkretes Beispiel zu geben. Unter der Annahme, dass Sie eine XML-Datei, die wie folgt aussehen:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
    <person id="1">
        <name>John Doe</name>
        <age>30</age>
        <address>
            <street>Main street 1</street>
            <city>Los Angeles</city>
        </address>
    </person>
    <person id="2">
        <name>Jane Doe</name>
        <age>40</age>
        <address>
            <street>Park Avenue 1</street>
            <city>New York</city>
        </address>
    </person>
</persons>

Dann können Sie es durchqueren wie folgt:

Document document = Jsoup.parse(new File("/persons.xml"), "UTF-8");

Element person2 = document.select("person[id=2]").first();
System.out.println(person2.select("name").text());

Elements streets = document.select("street");
for (Element street : streets) {
    System.out.println(street.text());
}

die Ausgänge

Jane Doe
Main street 1
Park Avenue 1

Update 2 :. Seit Jsoup 1.6.2, die 2012 veröffentlicht wurde März wird das Parsen von XML offiziell von der Jsoup API unterstützt

Andere Tipps

AFAIK alle XML-Abfragen in Java sind nicht typsicher und die meisten sind Java-1.3-kompatibel. , Daß das mein Lieblings Parser / Generator ist der xml Pull-Parser (xmlpp) Stil-Parser. Ich glaube, Java hat XMLStreamReader und XMLStreamWriter, wenn Sie 1.6 verwenden, die fast die gleiche wie die xmlpp Bibliothek sind. Besonders gut gefällt mir, dass ich ein Verfahren getFoo schreiben, die einen Stream-Leser und zieht daraus nimmt und gibt eine Foo-Objekt. Es ist eine Art des besten zwischen DOM und SAX. Ich denke, es kann als StAX von einigen bezeichnet werden.
Ich bin immer ein wenig Streifzug-y so dass ich verlassen jetzt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top