我有一个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循环行,它会毫无问题地加载文件。
为什么会这样?
答案 0 :(得分:3)
手动创建XML /使用字符串连接始终会导致此类问题:<
未正确编码,结果< paragraph.length; i++)...
被视为元素名称。
您应该根据需要对所有特殊字符进行编码。 (即<
的{{1}}。有关紧凑列表,请参阅http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references。