使用XDocument使用DTD解析XHTML

时间:2011-03-15 18:09:23

标签: xhtml windows-phone-7 dtd linq-to-xml

我需要从XHTML文档中获取纯文本。

我相信我已经在这里读过,WP7上的XDocument不支持DTD。我找不到它。好吧,当我尝试使用XDocument使用DTD解析XHTML时,它会抛出NotSuportedException。 stacktrace中的最后一次调用是System.Xml.XmlTextReaderImpl.ParseDoctypeDecl()

即使我尝试使用一些虚拟的XmlResolver,它也完全相同 - 它实际上并没有被调用。 (在this question中回答。)

所以我认为WP7 真的不支持它。

好吧,我需要来解析XHTML文档。到目前为止,我想出了两个(或多或少真实的)解决方案:
如果删除DTD声明,我可以这样做。但是,XHTML中可能有一些字符实体,如果字符实体不是预定义XML实体之一,则抛出异常。
因此该解决方案仅适用于某些XHTML。

我想过使用正则表达式。删除所有html标签非常容易,但“实体问题”仍然存在,因为我不认为替换所有实体是真正的/好的解决方案。

任何人都面临/解决了这个问题?如果我错了什么,你能给我一些建议或纠正我吗? 感谢。

1 个答案:

答案 0 :(得分:5)

HTML Agility pack是一个用于解析html文档的库,正如在论坛上声称的那样,它有一个WP7版本

http://htmlagilitypack.codeplex.com/discussions/225113