2016-08-08 27 views
0

Ich versuche, einen Ordner mit einer Reihe von XML-Dateien zu analysieren. Die XML-Dateien enthalten Informationen über einige Fahrzeuge. Die XML-Dateien werden automatisch generiert, und einige von ihnen haben ungültige Zeichen. Die Sache ist, dass es zu viele Dateien für mich gibt, um sie manuell zu korrigieren. Also frage ich mich, wie ich die ungültige Zeichenausnahme umgehen kann? Dies ist die ungültige Zeile in einige der XML-Dateien:So umgehen Sie die Problemumgehung 0x01 ungültiger Zeichenausnahme. Verwenden von Xdocument

<ECU EcuName="ABS" EcuFamily="BSS" CplNo="&#01;" Address="0x0B" ConfigChecksum="0x00000000" Updated="false"> 

ich versucht habe Stream ohne Erfolg zu nutzen. Das ist mein Code:

XDocument docs = XDocument.Load(new System.IO.StreamReader((path), Encoding.GetEncoding("utf-8")));     
      var nameValues = 
       from fpc in docs.Descendants("FPC") 
       select new 
       { 
        Name = (string)fpc.Attribute("Name"), 
        Value = (string)fpc.Attribute("Value") 
       }; 
+0

Womit wurden die Dateien erstellt? Es wäre das Beste, das zu beheben. –

+0

Die Datei wird von verschiedenen Softwareaktualisierungen erstellt, wenn das Fahrzeug aktualisiert wird. Die XML-Dateien enthalten automatisch generierte Informationen zum Fahrzeug, die von einem anderen Programm generiert werden, auf das ich keinen Einfluss habe. @ JonSkeet –

+0

Das ist peinlich. Sie könnten jede Datei einlesen und '' durch eine leere Zeichenfolge ersetzen, zum Beispiel ... ist das das einzige ungültige Zeichen und das einzige Format, in dem es auftritt? –

Antwort

1

Wenn Sie benötigen, können Sie die Datei mit z.

Das wird durch Zeichenreferenzen wie das, das Sie gezeigt haben, erhalten, nicht durch unzulässige literale Zeichen jedoch.

+0

Wie kann ich alle Zeichen zulassen? –

+0

Sie können nicht, nicht mit XML-Parsern, da die XML-Spezifikation die zulässigen Zeichen definiert und ein anderes Steuerzeichen als Tabulator, Zeilenumbruch oder Wagenrücklauf nicht zulässig ist. Im Grunde ist Ihre Eingabe kein wohlgeformtes XML. –

+0

Ok, danke! Deine Lösung hat für mich funktioniert! –