Groovy Jsoup-如何使用Jsoup获得直接子级而不是子级?

Groovy Jsoup-如何使用Jsoup获得直接子级而不是子级?,groovy,jsoup,Groovy,Jsoup,XML如下所示,我只关心的第一级,注意:在子节点中,也有相同的节点。这就是问题所在 <a> <b>b1</b> <b>b2</b> <d> <a> <b>d_a_b1</b> </a> <a> <b>d_a_b2</b>

XML如下所示,我只关心
的第一级,注意:在子节点
中,也有相同的节点。这就是问题所在

<a>
    <b>b1</b>
    <b>b2</b>
    <d>
        <a>
            <b>d_a_b1</b>
        </a>
        <a>
            <b>d_a_b2</b>
        </a>
    </d>
    <c>c</c>
</a>
实际结果是:

b1
b2
d_a_b1
d_a_b2

有人能帮忙选择第一级节点吗?任何意见都非常感谢

我不熟悉groovy,但是您可以像这样选择第一级子级

Document doc = Jsoup.parse(s)

Element a = doc.select("a").first()
System.out.println(doc)
Elements aChildren = a.children()

for(Element element : aChildren) {
    println element.select("b").text()
}
但我认为你的例子还有另一个问题。Jsoup将如下解析您的XML:

<html>
 <head></head>
 <body>
  <a> <b>b1</b> <b>b2</b> 
   <d> 
   </d></a>
  <a> <b>d_a_b1</b> </a> 
  <a> <b>d_a_b2</b> </a>  
  <c>
   c
  </c> 
 </body>
</html>

b1 b2
d_a_b1
d_a_b2
C
正如您所看到的,您的
标记在标记
之后立即关闭。这是因为HTML中不存在嵌套的
(这意味着嵌套链接不符合逻辑),JSoup将为您修复它


我希望这会有所帮助。正如我所说,我不熟悉
groovy
。因此,我可能会犯一些语法错误或逻辑错误。

谢谢,我只是使用了这个策略:Element a=doc.select(“a”)。首先()也感谢您的详细解释。
Document doc = Jsoup.parse(s)

Element a = doc.select("a").first()
System.out.println(doc)
Elements aChildren = a.children()

for(Element element : aChildren) {
    println element.select("b").text()
}
<html>
 <head></head>
 <body>
  <a> <b>b1</b> <b>b2</b> 
   <d> 
   </d></a>
  <a> <b>d_a_b1</b> </a> 
  <a> <b>d_a_b2</b> </a>  
  <c>
   c
  </c> 
 </body>
</html>