2015-04-01 111 views
2

我是新來的CSS,並嘗試通過Java的Jsoup解析器解析HTML。CSS選擇器「合併」元素

示例HTML:

<p>However much beautiful the s6 Edge looks, I doubt [...] the <a title="Samsung Unveils the Galaxy Note 4 and curved screen Note Edge" href="http://www.example.com/">Note Edge</a>, the dual gently curved screen [...] or accidental palm taps.</p> 

我已經得到了<p>元素中的文字如下:

Elements text = doc.select("p"); 

     for (Element element : text) { 
      System.out.println(element.ownText() + "\n"); 
     } 

輸出:

但是很多漂亮S6邊緣看起來,我懷疑[...],雙重 輕輕彎曲的屏幕或偶然的手掌水龍頭。

人們可以看到,文Note Edge insde的<a>元素沒有顯示出來。

所以我想問是否有任何方法可行,顯示整個文本,包括<a>元素中的文字如下:

但是很多漂亮S6的邊緣看起來,我懷疑[... ] 注邊, 雙輕輕彎曲的屏幕或偶然手掌水龍頭。

我很滿意每一個建議!

回答

1

docsownText()

獲取僅此元素所擁有的文本; 沒有得到所有孩子的合併文本。

想要調用element.text(),而是想要包含子節點的內容。

+0

先生,你應該有一個獎牌的子節點。謝謝!! – user944351 2015-04-01 15:08:33

1

做這樣的:

for (Element element : text) { 
    System.out.println(element.text() + "\n"); 
} 

您應該使用text()而不是ownText(),爲ownText()得到任何子元素的文本。

+0

謝謝,現在就完成! – user944351 2015-04-01 15:09:19

0

你可以做的是,代替文本是純文本,然後是<a></a>標籤,然後更純文本,你可以包裝文本,然後獲得<p></p>元素的每個子元素的文本。

<p id="myParagraph"> 
 
    <span>However much beautiful the s6 Edge looks, I doubt [...] the </span> 
 
    <a title="Samsung Unveils the Galaxy Note 4 and curved screen Note Edge" href="http://www.example.com/">Note Edge</a> 
 
    <span>, the dual 
 
     gently curved screen [...] or accidental palm taps.</span> 
 
</p>

所以,你的函數將遍歷元素<p>

//I don't known jsoup so i use javascript directly 
    var childrens= document.getElementByID("myParagraph").children; 
     childrens.forEach(function(child) { 
      console.log(child.textContent() + "\n"); 
     }); 
+0

謝謝,但用text()方法,標籤不再可見..所以前兩個傢伙的解決方案正在爲我工​​作。 – user944351 2015-04-01 16:23:00