解析包含“£”的XMl

时间:2011-06-24 11:33:05

标签: c# xml

我正在解析一个格式不正确的xml文档,它包含“&”在其中,并且解析不正确它节点有“&”在里面。

e.g。 <abcnode>&pound;70.00-&pound;90.00</abcnode>

当我尝试获取此节点的值时,它返回“70.00 - ”。

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

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

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

有没有办法使用XmlTextReader来解析这个xml?

2 个答案:

答案 0 :(得分:2)

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

编辑或者你可以破解XML的DOCTYPE,因为它被添加<!ENTITY pound "&#163;">,这应该使文档的其余部分格式正确。可能还有另一个技巧是将实体添加到XmlTextReader本身而不需要修改XML,但我不知道它。

答案 1 :(得分:0)

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