如何解决0x01无效字符异常。使用Xdocument

时间:2016-08-08 11:27:36

标签: c# xml linq-to-xml invalid-characters

我试图用一堆xml文件解析一个文件夹。 xml文件包含有关某些车辆的信息。 XML文件是自动生成的,其中一些文件包含无效字符。问题是,有太多的文件让我手动纠正它们。所以我想知道如何绕过无效的字符异常? 这是某些xml文件中的无效行:

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

我尝试过使用Streamreader但没有成功。这是我的代码:

 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")
                };

1 个答案:

答案 0 :(得分:1)

如果需要,可以使用例如

加载文件
XDocument doc;
using (XmlReader xr = XmlReader.Create(path, new XmlReaderSettings() { CheckCharacters = false }))
{
  doc = XDocument.Load(xr);
}
// now query document here

这将通过你所展示的角色引用来获得,而不是通过不允许的文字字符。