Beste Methode zum Parsen verschiedener benutzerdefinierter XML-Dokumente in Java

StackOverflow https://stackoverflow.com/questions/23106

  •  09-06-2019
  •  | 
  •  

Frage

Was ist die beste Methode, um mehrere, diskrete, benutzerdefinierte XML-Dokumente mit Java zu analysieren?

War es hilfreich?

Lösung

ich würde ... benutzen Stax Zum Parsen von XML ist es schnell und einfach zu verwenden.Ich habe es in meinem letzten Projekt verwendet, um XML-Dateien mit bis zu 24 MB zu analysieren.Es gibt eine schöne Einführung java.net, in dem Sie alles erfahren, was Sie für den Einstieg wissen müssen.

Andere Tipps

Grundsätzlich gibt es in Java zwei Haupt-XML-Parsing-Methoden:

  • SAXOPHON, wo Sie ein verwenden Handler um nur das aufzunehmen, was Sie in Ihrem XML wollen, und den Rest wegzulassen
  • DOM, das Ihre Datei die ganze Zeit über analysiert und es Ihnen ermöglicht, alle Elemente baumartiger zu erfassen.

Eine weitere sehr nützliche XML-Parsing-Methode, wenn auch etwas neuer als diese und erst seit Java6 in der JRE enthalten, ist StAX.StAX wurde als mediale Methode zwischen dem baumbasierten DOM- und dem ereignisbasierten SAX-Ansatz konzipiert.Es ähnelt SAX darin, dass das Parsen sehr großer Dokumente einfach ist, aber in diesem Fall „zieht“ die Anwendung Informationen vom Parser, anstatt dass das Parsen Ereignisse an die Anwendung „pusht“.Weitere Erläuterungen zu diesem Thema finden Sie hier Hier.

Je nachdem, was Sie erreichen möchten, können Sie also einen dieser Ansätze verwenden.

Sie werden es nutzen wollen org.xml.sax.XMLReader (http://docs.oracle.com/javase/7/docs/api/org/xml/sax/XMLReader.html).

Wenn Sie nur analysieren müssen, würde ich die Verwendung der XPath-Bibliothek empfehlen.Hier ist eine schöne Referenz: http://www.ibm.com/developerworks/library/x-javaxpathapi.html

Aber vielleicht möchten Sie darüber nachdenken, XMLs in Objekte umzuwandeln, und dann sind Ihnen keine Grenzen gesetzt.Dafür können Sie verwenden XStream, das ist eine tolle Bibliothek, die ich oft nutze

Benutzen Sie die dom4j Bibliothek

Lesen Sie zunächst das Dokument

import java.net.URL;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class Foo {

    public Document parse(URL url) throws DocumentException {
        SAXReader reader = new SAXReader();
        Document document = reader.read(url);
        return document;
    }
}

Verwenden Sie dann XPATH, um zu den benötigten Werten zu gelangen

public void get_author(Document document) {
    Node node = document.selectSingleNode( "//AppealRequestProcessRequest/author" );
    String author = node.getText();
    return author;
}

Unten finden Sie den Code zum Extrahieren eines Wertwerts mit vtd-xml.

import com.ximpleware.*;

public class extractValue{
    public static void  main(String s[]) throws VTDException, IOException{
        VTDGen vg = new VTDGen();
        if (!vg.parseFile("input.xml", false));
        VTDNav vn = vg.getNav();
        AutoPilot ap = new AutoPilot(vn);
        ap.selectXPath("/aa/bb[name='k1']/value");
        int i=0;
        while ((i=ap.evalXPath())!=-1){
            System.out.println(" value ===>"+vn.toString(i));
        }   
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top