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循环行,它加载文件时不会出现任何问题。
为什么会发生这种情况?
手动/使用字符串串联创建XML总是会导致这样的问题:<
没有正确编码,因此< paragraph.length; i++)...
被视为元素名称。
您应该根据需要对所有特殊字符进行编码。(即<
用于<
)。看见http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references用于紧凑列表。