2017-07-07 58 views
1

我試圖讓所有元素的直接父母,但我也得到了他們的兄弟姐妹。Jsoup:如何選擇直接的父母,直到根沒有他們的兄弟姐妹?

例如,我有這樣的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(); 

但在根變種我得到整個DOM結構也與所有的兄弟姐妹試過。

UPDATE

這根變種後,我又有了整個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> 
+0

請問您能否在您的問題中增加更多清晰度? –

+0

我更新了我的問題。這更清楚嗎? – rusna

回答

1

如果你有興趣的路徑只有使用Element.cssSelector()

它給你整個DOM路徑例如html > body > img

「Path」返回Darshit Chokshi方法不是唯一的。

+1

謝謝,這是我想要的。 – rusna

1

首先獲得所有元素名類'第一'使用,

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

現在,遍歷所有子元素使用,以獲得他們的父元素,

for(Element child : childs){ 
     Elements parents = child.parents(); 
     for(Element parent: parents){ 
     System.out.println(parent.tagName()); 
     } 
    } 

試試這個,希望它會爲你工作;)

+0

感謝您的意願,但_lukyer_答案更有幫助。 – rusna