对于示例,如果我写
* > a, b, c > d
输出标签是否为
的并集* > a
* > b
* > c > d
或的联合
* > a > d
* > b > d
* > c > d
我如何获得所需的一个?
基本上,我找不到包含所需详细信息的文档。
答案 0 :(得分:1)
第一个,但不是真的。更精确地说,输出标签将是以下内容的并集:
* > a
b
c > d
我准备了非常简单的HTML并在此处进行了测试: https://try.jsoup.org/~D9QmujE_m7rv9G3MahldfKJurfk
这与调试Jsoup代码时得到的一致。 org.jsoup.select.QueryParser
将您的查询解析为3个评估器:
,结果将包含与这三个条件中的任何一个匹配的元素,因此在这里看起来逗号具有最高优先级,并且可以作为OR 。
如果您真的想了解内部结构,可以查看this comment in Jsoup's source,该状态指出大多数组合器为AND,而逗号为OR。不必担心,如果您不了解所有内容(我也不知道),但是它或多或少是很清楚的。
这也与我使用try.jsoup.org上使用的代码打开html文件并在浏览器的控制台中运行以下代码时获得的结果一致:
document.querySelectorAll('* > a, b, c > d');
无论如何,如果您想实现
* > a > d
* > b > d
* > c > d
只需使用选择器:* > a > d, * > b > d, * > c > d
或更短的a > d, b > d, c > d