2012-03-31 19 views
1

Ich habe ein Java-Objekt mit 10 Attributen. 3-4 der Attribute stammen aus einer XML-Datei.Parsen einer großen XML-Datei mit Java

Das XML enthält ein Element mit 100-150 Attributen. Also muss ich meine gesamte XML-Datei analysieren (ich habe keine XSD dafür) und die 3-4 Attribute herausfinden und ihren Wert abrufen.

Ich brauche Vorschläge, welche Technologie zu verwenden ist und insbesondere funktioniert JAXB in meinem Fall? Jede Hilfe wird geschätzt.

+0

Ist das Adjektiv "groß" für das Problem relevant? Wenn ja, müssen wir wissen, wie groß groß ist. Für einige Leute ist 2Mb groß, andere meinen 20Gb. Sie sagen, das XML "hat ein Element mit 100-150 Attributen". Das ist mehrdeutig. Es könnte bedeuten, dass das XML nur ein Element enthält und dieses Element 100-150 Attribute hat. Oder es könnte bedeuten, dass das XML viele Elemente hat, von denen eines 100-150 Attribute hat. Diese Unterscheidung könnte für die Antwort einen großen Unterschied ausmachen. –

+0

Prüfen [Kann JAXB große XML-Dateien in Blöcken analysieren] (http://stackoverflow.com/questions/1134189) und [JAXB FAQ: Umgang mit großen Dokumenten] (http://jaxb.java.net/guide/Dealing_with_large_documents. html). –

+0

@Michael: Meine Datei ist 1 MB. Die Datei handelt von einer Konfiguration eines einzelnen Geräts. Es enthält eine Beschreibung einer Anzahl von Protokollen. Und jedes Protokoll hat 2-3 Felder darin. Ich bin an Werten von 2 oder 3 Protokollen interessiert. – user892871

Antwort

2

Ja JAXB (JSR-222) arbeitet in diesem Anwendungsfall:

ich ein Java-Objekt mit 10 Attributen. 3-4 der Attribute kommen aus einer XML-Datei .

Wenn weniger als die Hälfte Ihres Objekts XML mit JAXB zugeordnet ist, empfehle ich @XmlAccessorType(XmlAccessType.NONE). Dies teilt JAXB mit, dass nur die explizit annotierten Eigenschaften auf XML abgebildet werden.

Das XML ist ein Element mit 100-150 Attribute darin. Also muss ich meine gesamte XML-Datei analysieren (ich habe keine XSD dafür) und die 3-4 Attribute herausfinden und ihren Wert abrufen.

Die JAXB-Implementierung verwendet einen StAX- oder SAX-Parser, um das XML-Dokument zu verarbeiten. Dies sind ziemlich effiziente Parser und benötigen nicht viel Speicher.

+0

Vielen Dank für Ihre Eingaben. Ich bin ein Neuling und ich verstehe nicht, warum wir einen Parser benötigen, um das XML-Dokument zu verarbeiten? Kann die unmarshal Methode von Jax-B das für mich tun? – user892871

+0

@ user892871 - Alles, was Sie brauchen, ist JAXB. Was ich meinte, ist, dass eine JAXB (JSR-222) Implementierung einen Parser auf niedrigerer Ebene verwendet, um jede Größe des XML Dokuments effizient zu handhaben. –

+0

Danke Blaise. – user892871

Verwandte Themen