# sax parse exception invalid XML character



## xmlNeuling (1. Jun 2008)

Hallo,

ich hätte eigentlich eine ganz einfache Frage. Ich habe ein XML-Dokument kodiert mit 
	
	
	
	





```
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
```
.
In einem Eintrag befindet sich das ungültige Zeichen &#26. Ich versuche das Dokument mittels org.w3.dom einzulesen und bekomme dann eine SaxParseException wegen dem ungültigen Zeichen. Jetzt habe ich versucht das File als Base64 einzulesen wie folgt:  

```
DocumentBuilderFactory factory  = DocumentBuilderFactory.newInstance();
DocumentBuilder        builder  = factory.newDocumentBuilder();
Document document;
InputStream is=new FileInputStream(xmlFile);
document = builder.parse(is,"Base64");
```

Leider ohne Erfolg. Da ich wenig Erfahrung mit XML habe eine ganz einfache Frage:
Ich möchte einen Eintrag einlesen können aus dem XML Dokument auch wenn dieser fehlerhafte Zeichen hat und somit einen ParseError auslöst. Ist des möglich? Gibt es eine Möglichkeit auf ignoreParseErrors zu schalten? Mein Problem ist ich habe in einer XML Datei mehrere Datensätze und mit Dom eingelesen führt es dazu das bei nur einem fehlerhaften Datensatz alle Datensätze nicht gelesen werden. Ich könnte das natürlcih auch direkt mit SAX einlesen aber dann würde ich auch zumindestens den 'fehlerhaften' Eintrag mit dem verbotenen Zeichen nicht bekommen. 
Ich bin mir jetzt dabei zu überlegen mit Regex einen XML Reader zu basteln wenn es mit einem der vielen XML Parser nicht möglich sein sollte auch fehlerhafte Einträge auszulesen.

Mit freundlichen Grüßen


----------



## mikachu (2. Jun 2008)

bist du dir sicher, dass die xml-datei utf-8-konform ist?!?
wenn die das ist, kannst du die einfach so parsen, musst aber die codierung mit angeben ("UTF-8"), da die standardmäßig auf ISO-nochwas gesetzt ist.

es sieht IMO ganz so aus, als ob die xml nicht utf-8-konform gebaut ist!


#edit 1: der beitrag sollte besser in das "XML & Co." Forum!!!


----------



## xmlNeuluing (2. Jun 2008)

Hi,

wahrscheinlich ist die xml-Datei nicht UTF-8 konform. Habe zwar am Anfang


```
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
```

aber weiter dann diesen Parserror wegen


> & # 26 ;


 ,natürlich zusammengeschrieben, was ja kein UTF-8 ist. Ich meine dass ist Control. 
Aber trotzdem muß es doch ne Möglichkeit geben so ein File einzulesen??!!

Deshalb dachte ich wenn ich sie als Base64 einlese dass es egal ist was da drin ist, den meiner Annahme kann Base64 alles lesen.
Inzwischen habe ich mir mit Regex nen Leser geschrieben, funzt aber trotzdem interessiert mich wie ich des mit nem XML-Parser realisieren kann.


Sorry dass ich in das falsche Unterforum gepostet habe.

Gruß


----------



## xmlNeuling (5. Jun 2008)

Keiner ne Idee? Oder ist meine Frage dämlich?


----------



## Gast (6. Jun 2008)

hatte letzt ein ähnliches problem mit einem xml, dessen encoding völlig vermurkst war und leider nicht besser erzeugt werden konnte. hab auch nach ner möglichkeit gesucht, xerces mit auf den weg zu geben, alle ungültigen zeichen zu "ignorieren" und nichts gefunden.

hab mir dann beholfen, indem ich den input stream durch nen filter gejagt hab, der alle zeichen prüft und bei bedarf durch was gültiges ersetzt. geholfen hat mir dabei, im xml als encoding erstmal iso-8859 anzugeben. das hat nämlich den vorteil, dass kein encoder auf den bolzen kommt, nach 2,3 und 4 bittigen unicode präambeln zu suchen und das bitgemüse dann als ungültig identifiziert. die wenigen dadurch zerstörten sonderzeichen im text (das echte unicode) hab ich dann über ein entsprechendes mapping wieder korrigiert und am ende wieder unicode draus erzeugt.


----------

