.net - XmlDocument 加载与带有正确引号的 LoadXml

标签 .net xml

我发现 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/

相关文章:

c# - 在运行时更改数据源后,DataGridView 为空白

python - 如何在 python 中创建带有标题和正文的 xml

javascript - XML 在 jquery 中的格式不正确

c# - .Net 应用程序内存管理

c# - 使用在 C# .net 4 中的多个 XSD 文件中定义的复杂类型从 XSD 创建数据表

.net - 线程与并行处理

.net - 谷歌分析 API 和 .Net

xml - 在网络中添加 Mimetype 的顺序。配置文件

xml - 删除 XSLT 中的空行

xml - 根据 XSLT 中的条件增加值