我正在解析一个格式不正确的xml文档,它包含“&”在其中,并且解析不正确它节点有“&”在里面。
e.g。 <abcnode>£70.00-£90.00</abcnode>
当我尝试获取此节点的值时,它返回“70.00 - ”。
我无法控制这个xml,因此我将不得不解析这个格式错误的xml。
我正在使用XmlTextReader reader = new XmlTextReader(url);
从网址加载xml。
我可以让xml替换£
来解决我的问题,但是这个xml可能非常大,所以我不想下载文件来替换无效字符(出于性能原因)。
有没有办法使用XmlTextReader
来解析这个xml?
答案 0 :(得分:2)
XmlTextReader
将使用TextReader
参数进行读取,因此您可以实现一个继承TextReader
的类,覆盖所有ReadXXX()
方法并修复覆盖中的无效字符。
编辑或者你可以破解XML的DOCTYPE
,因为它被添加<!ENTITY pound "£">
,这应该使文档的其余部分格式正确。可能还有另一个技巧是将实体添加到XmlTextReader
本身而不需要修改XML,但我不知道它。
答案 1 :(得分:0)
我想知道你说这是不是很好吗?也许它正确解析但是构建一个DOM树,其中实体明确地显示为节点,而您的应用程序代码忽略了实体节点?