gpt4 book ai didi

jsoup - 如何在 JSoup 中选择 "this element"的直接子级

转载 作者:行者123 更新时间:2023-12-04 03:43:26 27 4
gpt4 key购买 nike

如果我有一个看起来像这样的元素:

<foo>
<bar> bar text 1 </bar>
<baz>
<bar> bar text 2 </bar>
</baz>
</foo>

我已经有了 <foo>元素被选中,我想选择 <bar>元素是 <foo> 的直接子元素但不是 <baz> 的 child ,我该如何指定?
Element foo = <that thing above>
foo.select("bar").text();

yield "bar text 1 bar text 2"
我想要的是类似的东西
foo.select("this > bar").text();

问题是: 如何在选择器中指定“这个元素”?

请注意,所需的 bar可能不是第一个——我需要一个也适用于以下情况的解决方案:
<foo>
<baz>
<bar> bar text 2 </bar>
</baz>
<bar> bar text 1 </bar>
</foo>

最佳答案

使用 :root用于指定“此元素”的结构伪元素。来自 Element.select Javadoc ,我们看到select使用“这个元素作为起始上下文”并且可以匹配“这个元素,或者它的任何子元素”;也就是说,:root指的是 this 元素,而不是实际的文档根。以下代码通过将第二个示例放置在一些外部标签中来进行演示:

//nest your second sample in some fake outer html body
Element html = (Element)Parser.parseFragment("<html><body><foo>\n" +
" <baz>\n" +
" <bar> bar text 2 </bar>\n" +
" </baz>\n" +
" <bar> bar text 1 </bar>\n" +
"</foo></body></html>", null, "http://example.com").get(0);
Element foo = html.select("foo").first();

System.out.println(foo.select(":root > bar"));

此代码打印
<bar>
bar text 1
</bar>

正确跳过嵌套 bar元素。

根据 Jsoup changelog , 结构伪元素支持在 1.7.2 中添加。

关于jsoup - 如何在 JSoup 中选择 "this element"的直接子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930049/

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