带右引号的XmlDocument Load与LoadXml

Dou*_*oug 2 .net xml

我看到XmlDocument Load()和LoadXml()在.NET 2.0中的工作方式有所不同.鉴于下面的XML文档(注意使用正确的引用,ascii代码146):

<?xml version="1.0" encoding="utf-8"?>
<nodes>
  <node>Some Data ’</node>
</nodes>
Run Code Online (Sandbox Code Playgroud)

当作为字符串传入时,为什么使用LoadXml()可以很好地加载,但如果作为文档传入Load()则会失败.IE和其他XML编辑器也不会加载和显示此文件.

简化代码示例:

[WebMethod]
public bool SubmitData(string xmlDoc)
{
   try
   {
      XmlDocument doc = new XmlDocument();
      doc.LoadXml(xmlDoc);
   }
   catch
   {
      return false;
   }

   return true;
}
Run Code Online (Sandbox Code Playgroud)

我知道代码很差,但它只是为了证明问题.如果字符串"xmlDoc"不是合法的xml文档,那么我试图让它失败.

我无法控制发送给我的XML内容.我刚接收它并通过Web服务使用它.显然,调用它的人正在从Word Doc复制和粘贴数据.我也没有设计这个,但我坚持维护它.:)

Ach*_*him 5

不同的是编码.从文件加载时,将应用utf-8解码,并且在您的情况下,您的代码146可能无效utf-8.LoadXml忽略编码,因为.Net字符串不需要解码.因此,你的特殊角色是一个有效的角色,一切都很好.