XMLEventReader mit <

Status
Nicht offen für weitere Antworten.

Michael_Zeke

Mitglied
Hallo,

ich habe einen XMLEventReader der Probleme beim Einlesen von XML-Dateien bereitet.

Wenn ich einen Tag wie folgt habe:
<name>Wert &lt; 5</name>

Dann bekomme ich nur "Wert " vom Parser. Beim &lt; verschluckt er sich.

Mit einem Reader wie:
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
funktioniert das ganze. Leider muss ich den XMLEventReader verwenden, da ich sehr große Tabellen habe, die nicht komplett als DOM in den Speicher passen.

Hat jemand schon mal von so einem Problem gehört oder weiß eine Lösung ?
 

Michael_Zeke

Mitglied
Leider führt auch dies nicht zum Ergebnis.
Sobald er das erste & gefunden hat, steigt er irgendwie aus.

Was ich feststellen konnte:
- wenn ein String vor einem & kommt, wird nur der String genommen
Bsp: <name>aa &lt;</name> -> Ergebnis: "aa"
- wenn ein String nach dem & kommt wird alles danach nicht genommen
Bsp: <name>&lt; aa &gt;</name> -> Ergebnis: "<"

Genauso verhält es sich auch bei "<" für ein < statt &lt;
 

Noctarius

Top Contributor
In reinem XML gibt es kein Entity &lt; und da kodiert man das schon so oder man muss das Entity explizit in einem DTD definieren.
 

Michael_Zeke

Mitglied
Danke für Eure Bemühungen.

Ich habe den Fehler gefunden!

Es liegt daran, dass der XMLEventParser den Tag-Inhalt wenn dieser Entitys enthält, aufsplittet und als mehrere XMLEvent's mit Type XMLStreamConstants.CHARACTERS zurück gibt.

Mein bisheriger Code hatte dies nicht berücksichtigt. Nun mache ich an dieser Stelle eine Schleife und prüfe, ob der nächste XMLEvent auch vom Type XMLStreamConstants.CHARACTERS ist. Wenn ja, muss ich nur die jeweiligen Strings zusammensetzen.

Die richtige Verwendung der Entity ist:
<name>5.0 &gt; Wert &lt; 2.0</name>

Wenn man ein & drin haben möchte, nur dann muss man das & kodieren
<name>C&amp;A</name> = C&A
 

musiKk

Top Contributor
Sonst geht's dir aber noch gut? Oo War wohl nen Humpen zuviel, wie?

Naja, das ist wohl eine zugegebenermaßen etwas ruppige Art mitzuteilen, dass

In reinem XML gibt es kein Entity &lt; und da kodiert man das schon so oder man muss das Entity explizit in einem DTD definieren.

einfach falsch ist. Siehe auch die Spec: All XML processors MUST recognize these entities whether they are declared or not.
 

Noctarius

Top Contributor
Selbst wenn die Aussage falsch war (ja war sie, auch ein Mod darf sich mal irren), gibt es trotzdem etwas wie Freundlichkeit - wobei vergiss es, war scheinbar auch wieder falsch.

Aber was soll's, Frage ist beantwortet, du hast Recht und ich meine Ruhe - ergo Thread zu.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J XMLEventReader XML & JSON 9

Ähnliche Java Themen

Neue Themen


Oben