如何使用 XML DOM javascript 删除 xml 父标签?
How to remove xml parent tag using XML DOM javascript?
我正在致力于替换 xml 节点。我在删除内部节点本身的父节点时遇到问题。
我想删除内部节点很少的父节点并保留其他一些内部节点。
xml 字符串的来源:
<root>
***<bPoint id="1" >
<bLabel>
<text></text>
</bLabel>
<content src="p112" />***
<bPoint id="2">
<bLabel>
<text>xxx</text>
</bLabel>
<content src="p1123" />
</bPoint>
***</bPoint>***
<bPoint id="bPoint-2" >
<bLabel>
<text>xxx</text>
</bLabel>
<content src="p1123" />
</bPoint>
</root>
我的输出将是
<root>
<bPoint id="2">
<bLabel>
<text>xxx</text>
</bLabel>
<content src="p1123" />
</bPoint>
<bPoint id="bPoint-2" >
<bLabel>
<text>xxx</text>
</bLabel>
<content src="p1123" />
</bPoint>
</root>
有人帮帮我吗?
提前致谢。
可以在要替换的节点的父节点上使用replaceChild方法
所以你想在 root 上做一个 replaceChild,传入你的 bPoint,id 2 作为第一个参数,bPoint id 1 作为第二个参数
rootNode.replaceChild(bPoint2,bPoint1);
演示
var xml = '<?xml version="1.0" encoding="ISO-8859-1" ?><root><bPoint id="1"><bLabel><text></text></bLabel><content src="p112" /><bPoint id="2"><bLabel><text>xxx</text></bLabel><content src="p1123" /></bPoint></bPoint><bPoint id="bPoint-2" ><bLabel><text>xxx</text></bLabel><content src="p1123" /></bPoint></root>'
//Create xml parser and parse to XMLDocument
var parser = new DOMParser();
var xmldoc = parser.parseFromString(xml,"text/xml");
//Get "root" node
var rootNode = xmldoc.querySelector("root");
//Would use id selectors but number ids are invalid selectors
var bPoint1 = xmldoc.querySelector("bPoint");
var bPoint2 = bPoint1.querySelector("bPoint");
//Replace bPoint 1 with bPoint2
rootNode.replaceChild(bPoint2,bPoint1);
//Get the new xml string
var newXml = (new XMLSerializer).serializeToString(xmldoc);
console.log(xmldoc);
document.body.innerText = newXml;
我正在致力于替换 xml 节点。我在删除内部节点本身的父节点时遇到问题。
我想删除内部节点很少的父节点并保留其他一些内部节点。
xml 字符串的来源:
<root>
***<bPoint id="1" >
<bLabel>
<text></text>
</bLabel>
<content src="p112" />***
<bPoint id="2">
<bLabel>
<text>xxx</text>
</bLabel>
<content src="p1123" />
</bPoint>
***</bPoint>***
<bPoint id="bPoint-2" >
<bLabel>
<text>xxx</text>
</bLabel>
<content src="p1123" />
</bPoint>
</root>
我的输出将是
<root>
<bPoint id="2">
<bLabel>
<text>xxx</text>
</bLabel>
<content src="p1123" />
</bPoint>
<bPoint id="bPoint-2" >
<bLabel>
<text>xxx</text>
</bLabel>
<content src="p1123" />
</bPoint>
</root>
有人帮帮我吗?
提前致谢。
可以在要替换的节点的父节点上使用replaceChild方法
所以你想在 root 上做一个 replaceChild,传入你的 bPoint,id 2 作为第一个参数,bPoint id 1 作为第二个参数
rootNode.replaceChild(bPoint2,bPoint1);
演示
var xml = '<?xml version="1.0" encoding="ISO-8859-1" ?><root><bPoint id="1"><bLabel><text></text></bLabel><content src="p112" /><bPoint id="2"><bLabel><text>xxx</text></bLabel><content src="p1123" /></bPoint></bPoint><bPoint id="bPoint-2" ><bLabel><text>xxx</text></bLabel><content src="p1123" /></bPoint></root>'
//Create xml parser and parse to XMLDocument
var parser = new DOMParser();
var xmldoc = parser.parseFromString(xml,"text/xml");
//Get "root" node
var rootNode = xmldoc.querySelector("root");
//Would use id selectors but number ids are invalid selectors
var bPoint1 = xmldoc.querySelector("bPoint");
var bPoint2 = bPoint1.querySelector("bPoint");
//Replace bPoint 1 with bPoint2
rootNode.replaceChild(bPoint2,bPoint1);
//Get the new xml string
var newXml = (new XMLSerializer).serializeToString(xmldoc);
console.log(xmldoc);
document.body.innerText = newXml;