我有一个简单的XML文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<foo attr="blah ° 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;
答案 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;
}
}
你之前的。保存(); 多数民众赞成在没有使用整周的情况下我能想到的最好的。