2012-01-27 3 views
0

xmlファイルにいくつかのC#コードを含むノードがあります。XmlDocumentクラスがC#コードのノードを含むファイルの読み込みに失敗しました

<Script Name="WrapText"> 
     var sb = new System.Text.StringBuilder(); 
     int lastSpaceIndex = 0; 

      for(int i = 0; i < paragraph.length; i++) 
      { 
       var curChar = paragraph[i]; 
       sb.Append(curChar); 

       if (System.Char.IsWhiteSpace(curChar)) 
       { 
        lastSpaceIndex = i; 
       } 

       if (i % splitlength == 0) 
       { 
        if (lastSpaceIndex != 0) 
        { 
         sb[lastSpaceIndex] = '\n'; 
        } 
       } 
      } 

     return sb.ToString(); 
</Script> 

私はこのようなC#でのXmlDocumentやXmlReaderのクラスを使用して、これをロードしよう:

 
    XmlReader xReader = XmlReader.Create(new MemoryStream(ASCIIEncoding.UTF8.GetBytes(imml)), _ReaderSettings); 
    XmlDocument xDoc = new XmlDocument(); 
    xDoc.Load(xReader); 

私はこのエラーを取得する:

 
    Name cannot begin with the ' ' character, hexadecimal value 0x20. Line 25, position 21. 

私はループの行を削除した場合、問題なくファイルをロードします。

どうしてですか?

+0

xmlファイルをC#コードの周りにCDATAに変更した場合、正常に機能しますか? – Anton

答えて

3

XMLを手作業で/文字列連結で作成すると、常に<が正しくエンコードされず、結果として< paragraph.length; i++)...が要素名として扱われます。

必要に応じてすべての特殊文字をエンコードする必要があります。 (すなわち<の場合は&lt;)。コンパクトリストについては、http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_referencesを参照してください。

関連する問題