【问题标题】:Parsing XHTML with DTD using XDocument使用 XDocument 使用 DTD 解析 XHTML
【发布时间】:2011-03-16 03:31:34
【问题描述】:

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

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

即使我尝试使用一些虚拟的 XmlResolver,这也是完全相同的——它并没有真正被调用。 (在this question 中回答)。

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

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

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

有人遇到/解决了这个问题吗?如果我在某些事情上错了,你能给我一些建议或纠正我吗? 谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 刚刚试过,效果很好!非常感谢!一行代码解决了我的问题:var text = HtmlEntity.DeEntitize( htmlDocument.DocumentNode.Element("html").Element("body").InnerText);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    相关资源
    最近更新 更多