Zum analysieren von mehreren, aufeinander folgenden xml-Dateien in einem Dokument?
Ich habe eine große text-Datei, die eine Sequenz von XML-Valide Dokumente, die wie folgt aussieht:
<DOC>
<TEXT> ... </TEXT>
...
</DOC>
<DOC>
<TEXT> ... </TEXT>
...
</DOC>
etc. Es gibt keine <?xml version="1.0">
, die <DOC></DOC>
trennt jede einzelne xml. Was ist der beste Weg, um zu analysieren, diese in Java und Holen Sie sich die Werte unter <TEXT>
in jedem <DOC>
?
Wenn ich übergeben Sie die ganze Sache um ein DocumentBuilder, bekomme ich eine Fehlermeldung besagt, dass das Dokument ist nicht wohlgeformt. Gibt es eine bessere Lösung als einfach-Traversierung durch, ein Gebäude, ein string für jeden <DOC>
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen gültig XML-Dokument muss ein root element, unter dem Sie angeben können, alle anderen Elemente. Auch in einem Dokument kann nur ein root element vorhanden sein können. haben Sie einen Blick auf XML-Spezifikation (siehe Punkt 2)
So, Sie zu überwinden Ihr Problem, Sie können den Inhalt der Textdatei in einen String (oder StringBuffer/StringBuilder...) Und setzen Sie diese Zeichenfolge in der zwischen
<root>
und</root>
tagse.g ,
Das Dokument ist nicht wohlgeformt, weil Sie don T haben ein 'root' Knoten:
Du wirst eine harte Zeit haben, analysieren Sie diese mit einem "standard" XML-parser wie Xerces. Wie Sie bereits erwähnt das XML-Dokument nicht wohlgeformt ist zum Teil, weil es fehlt eine XML-Deklaration
<?xml version="1.0"?>
aber vor allem, weil es hat zwei Dokumenten-Wurzeln (d.h. die<doc>
Elemente).Ich schlage vor, Sie geben TagSoup versuchen. Geplant ist, dass parse (Zitat) "schlecht, böse und Brutal" XML. Keine Garantie, aber das ist wahrscheinlich Ihr bestes.
Können Sie versuchen, unter Verwendung von xslt für die Analyse.
Konnten Sie erstellen eine Unterklasse von InputStream fügt ein Präfix und ein suffix, das an den input-stream, und übergeben Sie eine Instanz dieser Klasse, um beliebige XML-parser: