2016-05-04 34 views
4

我正在使用node.js.如何使用cheerio解開子元素?

我正在使用cheerio html解析器來讀取html文檔。

在這個例子中

<div class="a b c"> 
     <a id="ddd"/> 
     sample 
</div> 

我想這

var cheerio = require('cheerio'); 
    var c$ = cheerio.load(/*html content*/); 
    var cntext = c$('div').html(); 

cntext包含所需的股利和所有的孩子。

如何刪除div並只保留子節點?

在此先感謝。

回答

1

簡單的解決方案使用jQuery

你可以簡單地把它轉換使用$(HTML_SSTRING_VAR)創建HTML和使用的.html()函數來得到的innerHTML像在第一種情況下 可以到HTML元素使用

var s=$("#Div").html(); 
 
var temp=$(s); 
 
alert(temp.html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<div id="Div"> 
 
    
 
<div class="demo-container"> 
 
    <div class="demo-box">Demonstration Box</div> 
 
</div> 
 
    </div>
最簡單的純JAV ascript解決方案

只要找到的「<」最後一次出現和「>」 第一次出現的字符串這將是假設本地javscript職能應該很好地工作的內容。

Javscript Substring Function Documentation

var s=$("#Div").html(); 
 
s = s.substring(s.indexOf(">")+1,s.lastIndexOf("<")-1); 
 
alert(s);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<div id="Div"> 
 

 
<div class="demo-container"> 
 
    <div class="demo-box">Demonstration Box</div> 
 
</div> 
 
    </div>

另一種簡單的方法來做到這

只要創建一個div追加它裏面的html內容和訪問所需內容孩子di的innerHTML V IN的過程中,我們通過傳遞這是要消除

innerHTML Documentation

Children Documentation

var s=$("#Div").html(); 
 
var temp = document.createElement('div'); 
 
temp.innerHTML = s; 
 
alert(temp.children[0].innerHTML);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<div id="Div"> 
 

 
<div class="demo-container"> 
 
    <div class="demo-box">Demonstration Box</div> 
 
</div> 
 
    </div> 
 

.unwrap()返回在div: jQuery的說明ription:從DOM中刪除匹配元素的父集,將匹配的元素留在其 位置。 .unwrap() documentation

ALL IN ONE FIDDLE

1

您需要選擇div,依靠選擇器方法以及節點的特定屬性來區分期望的div與其他所有其他屬性。

$('div[class="a b c"]')

看到https://github.com/cheeriojs/cheerio#selectors

需要迭代所選擇的div的直接孩子,

$('div[class="a b c"]').children().each(fn)

看到https://github.com/cheeriojs/cheerio#childrenselector

你需要移動後,發現每個孩子預先發現div

$('div[class="a b c"]').children().each(function(index, element){ 
    $(element).insertAfter($(element).parent()); 
}) 

看到https://github.com/cheeriojs/cheerio#each-functionindex-element-

你需要刪除空div

$('div[class="a b c"]').remove()

看到https://github.com/cheeriojs/cheerio#remove-selector-

在飛行中寫道,讓我知道。