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

本文关键字:代码 节点 文件 包含具 加载 XmlDocument | 更新日期: 2023-09-27 18:21:29

我有一个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类加载时,如下所示:

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

我得到这个错误:

名称不能以"字符(十六进制值0x20)开头。第25行,位置21。

如果我删除for循环行,它加载文件时不会出现任何问题。

为什么会发生这种情况?

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

手动/使用字符串串联创建XML总是会导致这样的问题:<没有正确编码,因此< paragraph.length; i++)...被视为元素名称。

您应该根据需要对所有特殊字符进行编码。(即&lt;用于<)。看见http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references用于紧凑列表。