作者热门文章
- html - 我的下拉菜单的内容关闭得太快
- c# - 使用 Html Agility Pack 从网页中的表中获取值而不使用 "SelectNode'
- html - 内容容器下的 CSS 下拉菜单
- html - 如何停止嵌套列表重叠父列表?
如果我有一个看起来像这样的元素:
<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();
"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 - 如何在 JSoup 中选择 "this element"的直接子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930049/
我是一名优秀的程序员,十分优秀!