Jump to content
Melde dich an, um diesem Inhalt zu folgen  

XML-Exception ungültiges Zeichen

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

Diesen Beitrag teilen


Link zum Beitrag
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

Diesen Beitrag teilen


Link zum Beitrag
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.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Melde dich an, um diesem Inhalt zu folgen  

Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung