我发现 XmlDocument Load( ) 和 LoadXml( ) 在 .NET 2.0 中的工作方式存在差异。给定下面的 XML 文档(注意使用右引号,ascii 代码 146):
<?xml version="1.0" encoding="utf-8"?>
<nodes>
<node>Some Data ’</node>
</nodes>
为什么当作为字符串传入时使用 LoadXml( ) 可以正常加载,但如果作为文档传入 Load( ) 则失败。 IE。其他 XML 编辑器也不会加载和显示此文件。
简化的代码示例:
[WebMethod]
public bool SubmitData(string xmlDoc)
{
try
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlDoc);
}
catch
{
return false;
}
return true;
}
我知道代码很差,但它只是为了演示问题。如果字符串“xmlDoc”不是合法的 xml 文档,那么我会尝试让此操作失败。
我无法控制发送给我的 XML 内容。我只是收到它并通过网络服务使用它。显然,调用它的人正在从 Word 文档复制和粘贴数据。我也没有设计这个,但我坚持维护它。 :)
最佳答案
区别在于编码。从文件加载时,将应用 utf-8 解码,并且您的代码 146 在您的情况下可能不是有效的 utf-8。 LoadXml 忽略编码,因为 .Net 字符串不需要解码。因此你的特殊角色是一个有效的角色,一切都很好。
关于.net - XmlDocument 加载与带有正确引号的 LoadXml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6192486/