2013-07-24 53 views
0

如何解決如果它是一個唯一的孩子從它的直接父母元素。我的JSoup版本是1.6.3,我無法升級它。從父項展開元素如果它是一個唯一的孩子 - JSoup

我試過使用:獨子選擇器,但我不認爲這是在我的JSoup版本中可用。

例如

<p> 
    <span>Some text</span> 
</p> 

應該成爲...

<span>Some text</span> 

但是......

<div> 
    <p>Some text</p> 
    <p>Some more text</p> 
</div> 

應該保持原樣。

謝謝,邁克爾。

更新:

期望的結果...

在以下情況下,我要選擇跨度(即,其中子元素是它的父的獨子):

<p><span>Text</span></p> 

在下列情況下,我希望被選中的跨度(即(1),其中子元素是其母公司的獨子節點,但家長還包含內容(2)其中,父元素包含一個以上的孩子):

<p>Some text <span>continued</span></p> 

<p><span>Text</span><a href="#">Link</a></p> 

一旦我選擇我想從解開他們正確的子項他們的父母元素。這可以使用unwrap()方法完成。我的主要問題是首先選擇要打開的子元素。

+0

我不清楚你的問題。什麼阻止你選擇跨度本身?提供您目前爲止工作的一些代碼,我會盡力幫忙! –

+0

因爲我想選擇子元素,它們是其父元素的唯一子元素。如果父元素包含內容以及子元素,我不想選擇子元素。我會更新我的問題,以更清楚地描述我期望的結果。 – Michael

回答

1

下面的代碼找到一個Element,它只有一個孩子,不管它們是什麼HTML標籤。

Elements items = doc.select("body *"); 

    for (Element item : items) { 

     if(item.parent() != null && item.parent().children().size() == 1 && StringUtil.isBlank(item.parent().ownText())) 
     { 
      System.out.println(item.parent().tagName() + " -> " + item.tagName() + " [" + item.ownText() + "]"); 
     } 

    } 
+0

完美,謝謝! – Michael

相關問題