我有一个类似的xml:
d
显然有更多的段落等。
使用cheerio(jquery的语法也适用)我想包装paragraph
元素,直到只有<document>
<paragraph>
<d>text1</d>
</paragraph>
<paragraph>
<d>text2</d>
</paragraph>
</document>
作为父元素。
.unwrap()
我想过在元素上使用d
命令3次。但我无法保证在paragraph
和{{1}}之间的某些xml中我可能会有更少或更多的父母。
答案 0 :(得分:2)
不确定这是否适用于您的环境,但是,我认为您可以使用这个想法:
$('d').each(function() {
cloned=$(this).clone();
$(this).closest('paragraph').append(cloned);
$(this).parentsUntil($('paragraph')).remove();
});
因此,克隆元素,将其放在段落中,删除所有parentsUntil()
段......
演示:
$('d').each(function() {
cloned=$(this).clone();
$(this).closest('paragraph').append(cloned);
$(this).parentsUntil($('paragraph')).remove();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<document>
<paragraph>
<a>
<b>
<c>
<d>text1</d>
</c>
</b>
</a>
</paragraph>
<paragraph>
<a>
<b>
<c>
<d>text2</d>
</c>
</b>
</a>
</paragraph>
</document>
答案 1 :(得分:1)
这是我的解决方案DEMO。我用循环来克隆<d>
元素,然后将其重写为段落元素。
JS
$(document).ready(function(){
var i = $('d').length;
for(x=i--;x>=0;x--){
var c = $('d').eq(x).clone();
$('d').eq(x).parents('paragraph').html(c);
}
});