Gekiganga Geschrieben 8. Juli 2006 Teilen Geschrieben 8. Juli 2006 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
_Arvid_ Geschrieben 8. Juli 2006 Teilen Geschrieben 8. Juli 2006 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. =) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gekiganga Geschrieben 8. Juli 2006 Autor Teilen Geschrieben 8. Juli 2006 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. :> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whatever Geschrieben 9. Juli 2006 Teilen Geschrieben 9. Juli 2006 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gekiganga Geschrieben 12. Juli 2006 Autor Teilen Geschrieben 12. Juli 2006 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.