Zum Inhalt springen

XML ähnliche Datenstruktur mit SAX parsen


Gekiganga

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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. =)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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. :>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...