Tho*_*ine 9 html xml algorithm xpath css-selectors
我想知道为什么有人会想要使用CSS选择器而不是XPath选择器,反之亦然,如果他可以使用其中任何一个.我认为理解处理语言的算法将解决我的奇迹.
有很多关于XPath和CSS选择器的文档,但我发现很少有比较.另外,我没有那么多使用CSS选择器.
这是我读到的关于差异的内容.(这三个参考文献讨论了在Selenium中使用XPath和CSS选择器来查询HTML,但我的想法很普遍.)
看起来CSS选择算法在某种程度上针对HTML进行了优化,但我不知道如何.
主要区别在于您的目标文档结构的稳定性:
当结构重要和/或稳定时,XPath 是一种很好的查询语言。您通常指定路径、条件、精确偏移...它也是检索一组相似对象的良好查询语言,正因为如此,它与 XQuery 有着密切的关系。这里的文档具有稳定的结构,您必须检索重复/相似的部分
CSS 选择器更适合更好的 CSS 样式表。这些不关心文档结构,因为这变化很大。想象一个应用于网站所有 HTML 页面的 CSS 样式表。每个页面的内容和结构都不同。由于结构的变化,CSS 选择器在这里变得更好。您会注意到访问更多地基于标签。大多数 CSS 语法指定一组元素、属性、id、类......而不是它们的结构。在这里,您必须找到在文档结构中没有明确位置但标记有某些属性的部分。
更新:仔细研究您的问题后,我意识到您对当前的实现更感兴趣,而不是查询语言的性质。在这种情况下,我无法给你你正在寻找的答案。我只能推测原因仍然是一个比另一个更依赖于结构。
例如,在 XPath 中,您必须跟踪正在处理的文档的结构。另一方面,当特定标签出现时,CSS 选择器就会被触发,并且它之前的内容通常并不重要。我可以想象,实现一个在阅读文档时工作的 CSS 选择器算法会容易得多,而 XPath 在更多情况下您确实需要完整的文档和/或严格跟踪它正在阅读的内容(因为历史和你正在阅读的内容的背景更重要)
现在,不要太认真地对待我的更新。我在这里只是猜测,因为我有一些语言解析的背景,但实际上我没有为数据查询设计的经验。