Jsoup:如何在没有兄弟姐妹的情况下选择直接父母直到根?

时间:2017-07-07 02:09:07

标签: java html dom jsoup parent

我正在努力获得所有直接的父母,但我也得到他们的兄弟姐妹。

例如,我有这个DOM结构......

<div class="html">
  <div class="head"></div>
  <div class="body">
    <a href="seznam.cz">seznam</a>
    <h2>Foo</h2> 
    <a href="google.com">google</a> 
    <p>
      <img class="first">
    </p>
    <img class="second"> 
    <ol>
      <li>1</li>
      <li>2</li>
    </ol>
  </div>
</div>

所以我希望 img 元素的所有直接父母都使用第一个类,直到 div ,类 html

我尝试使用以下代码

Element element = document.select("img").first();
Node root = element.root();

但是在root var中我也得到了所有兄弟姐妹的整个DOM结构。

更新

在root var之后,我再次拥有整个DOM结构:

<div class="html">
  <div class="head"></div>
  <div class="body">
    <a href="seznam.cz">seznam</a>
    <h2>Foo</h2> 
    <a href="google.com">google</a> 
    <p>
      <img class="first">
    </p>
    <img class="second"> 
    <ol>
      <li>1</li>
      <li>2</li>
    </ol>
  </div>
</div>

但我想要这样的事情:

<div class="html">
  <div class="body"> 
    <p>
      <img class="first">
    </p>
  </div>
</div>

2 个答案:

答案 0 :(得分:1)

首先获取所有带有类名的元素&#39; first&#39;使用,

Elements childs = document.getElementsByClass("first");

现在,迭代所有子元素以使用

获取其父元素
    for( Element child : childs){
      Elements parents = child.parents();
      for(Element parent: parents){
        System.out.println(parent.tagName());
      }
    }

试试这个,希望它能为你效劳;)

答案 1 :(得分:1)

如果您只对路径感兴趣,请使用Element.cssSelector()

它为您提供整个DOM路径,例如html > body > img

&#34;路径&#34;由 Darshit Chokshi 方法返回并不是唯一的。