【发布时间】:2017-06-19 15:18:21
【问题描述】:
XML sn-p:
<field>& is escaped</field>
<field>"also escaped"</field>
<field>is & "not" escaped</field>
<field>is " and is not & escaped</field>
我正在寻找有关如何预先解析任何 XML 以转义在通过解析器运行 XML 之前未转义的所有内容的建议?
我无法控制传递给我的 XML,他们可能不会很快修复它,我必须找到解析它的方法。
我遇到的主要问题是,将 XML 原样运行到解析器中,例如(如下)将引发异常,因为 XML 是错误的,因为其中一些没有被正确转义
string xml = "<field>& is not escaped</field>";
XmlReader.Create(new StringReader(xml))
【问题讨论】:
-
该问题的答案涉及“删除”坏字符而不是修复/转义它们,这并不理想。寻找能够逃避 & 而不是删除 & 当它被传递为未转义时的能力
-
使用 System.Net.WebUtility.HtmlDecode 或 System.Net.WebUtility.HtmlEncode。参见维基:en.wikipedia.org/wiki/…。该文件看起来像是被修改为使用 html 并且只需要转换回 xml。
-
@jdweng 不要认为这有帮助 - 你会从
&amp;quot;逃到&amp;quot;,这不是我们想要的。 -
您可以尝试使用 DGML 解析器,我发现它比普通的 XML 解析器更能容忍结构/编码问题。过去我遇到过问题,我会从 F5 设备传回不完整的 XML,而 DGML 解析器显然是唯一能够找出错误并绕过它们的解析器。抱歉,我不记得我使用的 DGML 解析器了,大约 5 年了。
标签: c# xml xml-parsing