2016-05-04 38 views
4

node.jsを使用しています。cheerioを使って子要素をアンラップする方法は?

私はcheerio htmlパーサーを使用してhtmlドキュメントを読み取ります。私はこの

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

cntextを試してみました。この例では

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

は希望のdivとそのすべての子が含まれています。

divを削除して子ノードのみを保持するにはどうすればよいですか?

ありがとうございます。

答えて

1
あなたは、単にHTMLを作成し、 ができる最初のケースのようにinnerHTMLプロパティを取得するには()関数を.htmlを使用するために$(HTML_SSTRING_VAR)を使用して要素をHTMLに変換することができ

jQueryを使って

シンプルなソリューション最も簡単なピュアJAV

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>
を使用ソリューション

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>

それを

を行う別の簡単ちょうどそれの内側にHTMLコンテンツを追加し、として必要なコンテンツにアクセスするdiv要素を作成します。子供のdiHTのinnerHTML jQueryの内容:vプロセスでは、我々はによって

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を渡しますription:一致した要素を のDOMの場所から除外して、 の要素のセットの親を削除します。 .unwrap() documentation

ALL IN ONE FIDDLE

1

divを選択する必要があります。そのためにセレクタ方式とノードの特定の属性を使用して、希望するものを他のものと区別します。

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

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

はあなたが後に発見されたそれぞれの子供たちを移動する必要がhttps://github.com/cheeriojs/cheerio#childrenselector

を参照してください、あなたが選択したdiv要素の直接の子を反復処理する必要がhttps://github.com/cheeriojs/cheerio#selectors

を見ます前もって見つけたdiv

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

あなたは空div

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

を削除する必要がhttps://github.com/cheeriojs/cheerio#each-functionindex-element-

を参照してくださいhttps://github.com/cheeriojs/cheerio#remove-selector-

は私に知らせて、その場で書いてご覧ください。

関連する問題