如何从Javascript Dom中删除子节点

时间:2015-01-28 00:32:33

标签: javascript xml dom

我有一个名为 MainNode 的XML节点。在这个节点内,我有四个其他节点,NodeOne直到NodeFour。如何仅从MainNode中删除节点2和3?

我的问题的第二部分:可以在不删除节点1和4的情况下删除MainNode和SubNodes 2和3吗? 以下是我的问题的XML:

<MainNode>
    <NodeOne>one</NodeOne>
    <NodeTow>tow</NodeTow>
    <NodeThree>Thre</NodeThree>
    <NodeFour>Four</NodeFour>
</MainNode>

1 个答案:

答案 0 :(得分:0)

使用DOMParser然后使用标准DOM操作。

第1部分

&#13;
&#13;
var xml = '<MainNode><NodeOne>one</NodeOne><NodeTow>tow</NodeTow><NodeThree>Three</NodeThree><NodeFour>Four</NodeFour></MainNode>',
    doc = new window.DOMParser().parseFromString(xml, 'text/xml'),
    NodeTow = doc.querySelector('NodeTow'),
    NodeThree = doc.querySelector('NodeThree');

NodeTow.parentElement.removeChild(NodeTow);
NodeThree.parentElement.removeChild(NodeThree);

document.getElementById('out').textContent = (new XMLSerializer().serializeToString(doc));
&#13;
<pre id="out"></pre>
&#13;
&#13;
&#13;

第2部分

&#13;
&#13;
var xml = '<MainNode><NodeOne>one</NodeOne><NodeTow>tow</NodeTow><NodeThree>Three</NodeThree><NodeFour>Four</NodeFour></MainNode>',
    doc = new window.DOMParser().parseFromString(xml, 'text/xml'),
    MainNode = doc.querySelector('MainNode'),
    NodeTow = doc.querySelector('NodeTow'),
    NodeThree = doc.querySelector('NodeThree'),
    fragment = document.createDocumentFragment(),
    children;

MainNode.removeChild(NodeTow);
MainNode.removeChild(NodeThree);

children = [].slice.call(MainNode.children);
children.forEach(function (child) {
    fragment.appendChild(child);
});

doc.removeChild(MainNode);
doc.appendChild(fragment);

document.getElementById('out').textContent = (new XMLSerializer().serializeToString(doc));
&#13;
<pre id="out"></pre>
&#13;
&#13;
&#13;