Zum Inhalt springen

XML-Exception ungültiges Zeichen


Tician

Empfohlene Beiträge

Hallöööchen mit 3 öchen,

Mit meinem C# programm lese ich XML-Dateien aus.

Damals hätte ich einen StreamReader genommen und mit Regex ausgelesen, seit geraumer Zeit benutze ich aber die angebotenen XML-Klassen.

Das Problem: Die XML-Datei hat keinen Header der die Codierung angibt - zudem habe ich darauf auch keinen EInfluss, die Anforderung ist also ohne auszukommen.

Die Datei selbst beinhaltet norwegische, dänische und schwedische Zeichen - und eines davon (vielleicht auch mehrere) bringt mein Programm dazu mit einer Exception zu beenden:

System.Xml.XmlException: Ungültiges Zeichen in der angegebenen Codierung

Der relevante Code sieht so aus:

                string[] files = Directory.GetFiles(stringSource, "*.xml");
                if (files.Length != 0)
                {
                    using (StreamWriter sw = new StreamWriter(destinationPath))
                    {
                        foreach (object file in files)
                        {
                            name = Convert.ToString(file);

                            //Read XML, get Nodes
                            XmlDocument doc = new XmlDocument();
                            doc.Load(name);  //hier Exception

Das angemeckerte Zeichen: å

Ich habe gesehen das andere das wohl irgendwie in einen StreamReader packen - aber verstanden habe ich es nicht wirklich. Außerdem weiß ich überhaupt nicht welchen Zeichensatz ich brauche.

Habt ihr Ideen oder Lösungen?

 

Grüße

Tician

Link zu diesem Kommentar
Auf anderen Seiten teilen

using (StreamReader oReader = new StreamReader(name, Encoding.GetEncoding("ISO-8859-1"))) { doc = XDocument.Load(oReader); }

Bei der Load Methode von der XmlDocument kannst du leider keinen Parameter zum Zeichensatz mitgeben. Der Streamreader kann es aber (über den 2. Parameter kannst du jeden beliebigen unterstützten Zeichensatz eingeben, in deinem Beispiel sollte der ISO-8859-1 passend sein).

Welcher Zeichensatz was unterstützt kannst du hier nachlesen Klick mich

Bearbeitet von Gottlike
Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Grund für die Exception ist, dass load(string uri) intern einen XmlTextReader instanziiert. Der schaut nach, ob die Encoding-Deklaration vorhanden ist. Falls nicht, wird standardmäßig UTF-8 als Encoding gewählt. Der XmlTextReader versucht daraufhin die Zeichen zu interpretieren und fällt bei dem å auf die Nase, weil die Datei nicht UTF-8 kodiert ist.

Der StreamReader ist auch nichts anderes, als ein TextReader, von daher kann auch dieser genommen werden, wie @Gottlike schon schrieb.

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