0

当我不断收到以下错误时,我正在尝试将包含特殊字符的 XML 文件的字符串内容解析到 XDocument 中以进行进一步处理:

名称不能以“.”开头 字符,十六进制值 0x00。第 1 行,第 8 位。

我无法控制此文件。我所能做的就是从我有权读取的网络共享中解析它。文件内容如下:

<?xml version="1.0" encoding="utf-16"?>
<ns0:SAEErr xmlns:ns0="http://xyz">
<ErrorInformation>olsfdhfaskldhfksajdfkajsf</ErrorInformation>
<OriginalMessage>慐浹湥䥴Ɽ慐浹湥却慴畴䍳摯ⱥ慐&lt;/OriginalMessage>
</ns0:SAEErr>

上面解析文件的代码如下:

StringBuilder sb = new StringBuilder();
        sb.Append("<root>");
        sb.Append(FileUtil.ReadFileContent(fileName));
        sb.Append("</root>");

        return XDocument.Parse(sb.ToString());        

我在这里想念什么?

提前致谢!

更新:以下代码更新做到了:

 XElement body = XElement.Load(fileName);

 return new XDocument(new XDeclaration("1.0", "utf-16", "no"), body);

谢谢亨克!

4

1 回答 1

0

读取文件时,XElement.Load()我只能在更改utf-16utf-8处理行后重现您的错误。所以这确实是一个编码错误。

编辑:

你的代码:

  StringBuilder sb = new StringBuilder();
  sb.Append("<root>");
  sb.Append(FileUtil.ReadFileContent(fileName));  // Encoding ??
  sb.Append("</root>");
  return XDocument.Parse(sb.ToString()); 

尝试:

  XElement body = XElement.Load(fileName); 
  XDocument doc = new XDocument(new XElement( "root", body));
于 2012-09-17T18:31:02.180 回答