gpt4 book ai didi

html - 在格式不正确的 HTML 中使用 XPath 查找节点(或接近节点)

转载 作者:搜寻专家 更新时间:2023-10-31 08:22:26 25 4
gpt4 key购买 nike

我正在使用 XPath 在模板中定位一个节点(或接近它的东西),该模板具有大约 10 层深的格式不正确的 HTML。 (不,这个 HTML 不是我写的……但我的任务是深入研究它。)

我似乎能够使用 Firefox 的 XPartner 附加组件检索相关元素的 XPath;但是,它只提供了实时站点中的位置,而不是提供给我的模板中的位置。 (模板来自非标准的服务器端脚本语言;阅读内部构建的语言)

您是否知道任何 XPath 工具特别擅长处理格式不正确的 HTML。

最佳答案

XPath 表达式无法针对格式不正确的 XML 文档求值,这正是所描述的情况。

可以通过两个链接步骤来完成此操作,第一步是将 HTML 转换为格式良好的 XML,然后第二步是应用 XPath 表达式。

因此,问题可以更准确地表述为“如何将 HTML 转换为 XML,以便可以根据它计算 XPath 表达式”。

这里有两个好工具:

  1. TagSoup ,一个开源程序,是一个基于Java和SAX的工具,由John Cowan开发。 .这是一个用 Java 编写的符合 SAX 的解析器,它不解析格式良好或有效的 XML,而是解析 HTML,因为它在野外发现:糟糕、肮脏和野蛮,尽管通常远非短小。 TagSoup 是为那些必须使用某种合理的应用程序设计来处理这些东西的人设计的。通过提供 SAX 接口(interface),它允许将标准的 XML 工具应用于甚至最糟糕的 HTML。 TagSoup 还包括一个命令行处理器,它可以读取 HTML 文件并可以生成干净的 HTML 或格式良好的 XML(非常接近 XHTML)。Taggle 是 TagSoup 的商业 C++ 端口。

  2. SgmlReader 是微软Chris Lovett开发的一款工具.SgmlReader 是一个基于任何 SGML 文档(包括对 HTML 的内置支持)的 XmlReader API。还提供了一个命令行实用程序,它输出格式正确的 XML 结果。下载包含独立可执行文件和完整源代码的 zip 文件:SgmlReader.zip

  3. The pure XSLT 2.0 Parser of HTML David Carlisle 撰写.阅读它的代码对我们每个人来说都是一次很好的学习练习。

来自描述:

"d:html 解析(字符串) d:htmlparse(string,namespace,html-mode)

单参数形式等同于) d:htmlparse(字符串,'http://ww.w3.org/1999/xhtml',true()))

使用一些内置启发式方法将字符串解析为 HTML 和/或 XML) 控制元素的隐式打开和关闭。

它没有 HTML DTD 的完整知识,但有完整的列表 空元素和实体定义的完整列表。 HTML 实体,以及 十进制和十六进制字符引用都被接受。注意 html 实体 即使 html-mode=false() 也能被识别。

元素名称小写(如果 html-mode 为 true())并放入 命名空间参数指定的命名空间(可以是“”来表示 无命名空间,除非输入有明确的命名空间声明,在 在这种情况下,这些将得到尊重。

如果 html-mode=true()"属性名称小写

阅读更详细的描述 here .

关于html - 在格式不正确的 HTML 中使用 XPath 查找节点(或接近节点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/354322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com