解析包含“&;英镑&”;

本文关键字:英镑 amp 包含 | 更新日期: 2023-09-27 18:00:09

我正在解析一个格式不正确的xml文档,它包含"&",并且解析不正确——一个节点中包含"&"。

例如<abcnode>&pound;70.00-&pound;90.00</abcnode>

当我尝试获取这个节点的值时,它返回"70.00-"。

我无法控制这个xml,所以我将不得不解析这个格式错误的xml。

我正在使用XmlTextReader reader = new XmlTextReader(url);从url加载xml。

我可以让xml替换&pound;来解决我的问题,但这个xml可能很大,所以我不想下载文件来替换无效字符(出于性能原因)。

有没有一种方法可以使用XmlTextReader解析这个xml?

解析包含“&;英镑&”;

XmlTextReader将从中读取一个TextReader参数,因此您可能能够实现一个继承TextReader的类,覆盖所有ReadXXX()方法并修复覆盖中的无效字符。

EDIT或者,您可以在读取XML的DOCTYPE时对其进行破解,以添加<!ENTITY pound "&#163;">,这将使文档的其余部分形成良好的格式。可能还有另一个技巧可以在不修改XML的情况下将实体添加到XmlTextReader本身,但我不知道。

我想知道你说这不是很好的形式是对的吗?也许它解析正确,但构建了一个DOM树,其中实体显式显示为节点,而您的应用程序代码忽略了实体节点?