0

特殊文字を含む XML ファイルの文字列の内容を解析して、さらに処理するために XDocument に変換しようとしていますが、次のエラーが発生し続けます。

名前を「.」で始めることはできません 文字、16 進値 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 に答える