.NET XML无助于解析Save上的实体

时间:2010-08-09 11:18:51

标签: .net xml vb.net encoding entities

我有一个简单的XML文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<foo attr="blah &#176; blah"/>

当我将它加载到.NET XmlDocument并发出Save,即:

xmlDoc = New XmlDocument()
xmlDoc.Load("c:\temp\bar.xml")
xmlDoc.Save("c:\temp\bad.xml")

新XML文件包含已解析的放大器176(度数符号)。然后,这打破了我正在尝试将XML加载到的最终黑盒子。

我尝试过使用编码,效果不大。解析器是否可以只回显所有内容而不解析实体?无意中,它没有解决&amp; amp;#176;

1 个答案:

答案 0 :(得分:1)

XmlDocument加载unescapes字符,也一直在玩它,无法找到任何关于如何阻止这种行为的简单解决方案。

小黑客会做这样的事情

foreach (XmlNode xn in xdoc.SelectNodes("descendant-or-self::*"))
{
  foreach(XmlAttribute attr in xn.Attributes)
  {
    string val = System.Web.HttpUtility.HtmlEncode(attr.Value);
    attr.Value = val;
  }
  if (!xn.InnerXml.Contains("<"))
  {
    string val = System.Web.HttpUtility.HtmlEncode(xn.InnerText);
    xn.InnerText = val;
  }
}
你之前的

。保存(); 多数民众赞成在没有使用整周的情况下我能想到的最好的。