Zum Inhalt springen

XML-Exception ungültiges Zeichen


Empfohlene Beiträge

Geschrieben

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

Geschrieben (bearbeitet)
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
Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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