Zum Inhalt springen

XML ähnliche Datenstruktur mit SAX parsen


Empfohlene Beiträge

Geschrieben

Ich möchte Daten auslesen, die in einer XML-ähnlichen Struktur aufgebaut sind. Der einzige Unterschied liegt darin, dass sie kein Rootelement besitzen und daher mehrere Elemente parallel auf der Roothirarchie liegen können. Der Einfachheit halber benutze ich dazu einen SAX Parser.

Das erste Element dieser Hirarchie und dessen Kinder werden korrekt ausgelesen, doch sobald ein nächstes folgt, steigt der Parser mit folgender Meldung aus:

org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.

Natürlich könnte ich jetzt einen Workaround erstellen, allerdings wollte ich mich zuerst erkundigen, ob man diese Validierung nicht auch abschalten kann. Meine Suchen im Internet haben bisher leider nichts ergeben.

Geschrieben

Die Meldung ist eindeutig. Das hast du ja bereits erkannt. :)

Dass du kein root-Element hast, ist nicht wirklich XML-konform.

Auf die Schnelle fällt mir kein XML-Parser ein, der das kann, was du möchtest.

Auch ein Beispiel, wieso man soetwas machen wollte, fällt mir nicht ein.

Was spricht also dagegen, um alle ersten Elemente herum ein root-Element zu legen? Dann wäre dein XML-Dokument "well-formed" und du hättest mit dem Parser keine Schwierigkeiten.

Wer oder was auch immer das XML-Dokument schreibt, welches du auslesen möchtest. Ich denke, er/sie/es sollte lernen, dass XML auch Regeln hat.

Wenn du darauf keinen Einfluss hast, kann ich an dieser Stelle keine weitere Hilfe anbieten. :-/

Grüße.

Arvid. =)

Geschrieben

Dass die Daten kein Rootelement besitzen, liegt daran, dass ein Element als Root genommen wurde, bei dem erst später bemerkt wurde, dass es auch mehrfach vorkommen kann, unter gewissen eigenwilligen Bedingungen. und da unsere Kunden alle dieses Format benutzen und wir deswegen nicht verlangen können, dass alle ihre Systeme umstellen, muss es eben so gehn.

Gegen ein neues Rootelement spricht im ersten Fall der größere Ressourcenverbrauch für die zusätzlichen Arbeitsschritte bei mehreren tausend Dateien. Darum wollte ich erst wissen, ob es eine schöne Lösung dafür gibt, dem Parser das validieren auszutreiben.^^

Aber wenn da nichts zu machen ist, komm ich wohl nicht drum rum. Jedenfalls danke ich dir. :>

Geschrieben

Ich hätte da eine zimlich simple Idee wie man das Umgehen könnte:

Ich schätze du benutzt irgendeinen InputStream oder sonstwas zum lesen das Daten. Schreib dir einfach ne eigene Klasse, die die entsprechende Methode zum lesen überschreibt.

In deiner Klasse lieferst du dann vor beginn der Daten einfach ein <root> und vor dem EOF noch ein </root>.

Dann dürfte sich der Parser beruhigen und ressourcenmäßig ist das vermutlich auch nicht unbedingt aufwendig.

Geschrieben

Habs nun über zusätzliche Dateien gelöst, musste schnell fertig werden.

Das mit dem InputStream ist sicher auch ne nette Lösung, allerdings müsste ich da vorher noch die XML Deklaration rausfiltern und ich weiß gerade nicht, wie sich die verschiedenen read-Methoden verhalten. Jedenfalls werd ichs privat mal austesten und schauen, ob sich da was machen lässt.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...