XmlDocument类无法加载包含带有C#代码的节点的文件

时间:2012-01-27 02:04:18

标签: c# xmldocument

我有一个xml文件,其中包含一些包含一些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.

如果删除for循环行,它会毫无问题地加载文件。

为什么会这样?

1 个答案:

答案 0 :(得分:3)

手动创建XML /使用字符串连接始终会导致此类问题:<未正确编码,结果< paragraph.length; i++)...被视为元素名称。

您应该根据需要对所有特殊字符进行编码。 (即&lt;的{​​{1}}。有关紧凑列表,请参阅http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references