admin管理员组文章数量:1429336
I have one XML like below, and I want to remove Players
tag when Flg = 1
<sports>
<cricket Team = England>
<Players Name = "EAA" Flg = "0"></Players>
<Players Name = "EAB" Flg = "1"></Players>
</cricket>
<cricket Team = India>
<Players Name = "IAA" Flg = "0"></Players>
<Players Name = "IAB" Flg = "1"></Players>
</cricket>
<cricket Team = Aus>
<Players Name = "AAA" Flg = "0"></Players>
<Players Name = "AAB" Flg = "1"></Players>
</cricket>
</sports>
So what I tried here is
var Players = xml.getElementsByTagName('Players');
var arr = Array.prototype.slice.call( Players )
for(var i=0; i<arr.length; i++)
{
var FlgAtt = arr[i].getAttribute('Flg');
if(Flg == "1" ){
arr.splice(i,1)
}
}
But in the final XML those player tags are still available. My final output should be like
<sports>
<cricket Team = England>
<Players Name = "EAA" Flg = "0"></Players>
</cricket>
<cricket Team = India>
<Players Name = "IAA" Flg = "0"></Players>
</cricket>
<cricket Team = Aus>
<Players Name = "AAA" Flg = "0"></Players>
</cricket>
</sports>
Can anybody tell me what I am doing wrong and how to solve these issues?
I have one XML like below, and I want to remove Players
tag when Flg = 1
<sports>
<cricket Team = England>
<Players Name = "EAA" Flg = "0"></Players>
<Players Name = "EAB" Flg = "1"></Players>
</cricket>
<cricket Team = India>
<Players Name = "IAA" Flg = "0"></Players>
<Players Name = "IAB" Flg = "1"></Players>
</cricket>
<cricket Team = Aus>
<Players Name = "AAA" Flg = "0"></Players>
<Players Name = "AAB" Flg = "1"></Players>
</cricket>
</sports>
So what I tried here is
var Players = xml.getElementsByTagName('Players');
var arr = Array.prototype.slice.call( Players )
for(var i=0; i<arr.length; i++)
{
var FlgAtt = arr[i].getAttribute('Flg');
if(Flg == "1" ){
arr.splice(i,1)
}
}
But in the final XML those player tags are still available. My final output should be like
<sports>
<cricket Team = England>
<Players Name = "EAA" Flg = "0"></Players>
</cricket>
<cricket Team = India>
<Players Name = "IAA" Flg = "0"></Players>
</cricket>
<cricket Team = Aus>
<Players Name = "AAA" Flg = "0"></Players>
</cricket>
</sports>
Can anybody tell me what I am doing wrong and how to solve these issues?
Share Improve this question edited Jan 27, 2017 at 14:31 zx485 29.1k28 gold badges53 silver badges63 bronze badges asked Jan 27, 2017 at 5:07 shanky singhshanky singh 1,1412 gold badges13 silver badges25 bronze badges 2- You are removing them from the array, not the document.... – epascarello Commented Jan 27, 2017 at 5:11
- @epascarello Ya, even in debugger also i am get same, What i need to do for removing from doc. – shanky singh Commented Jan 27, 2017 at 5:11
2 Answers
Reset to default 4Assuming that's in document
,
Array.from(document.querySelectorAll('Players[Flg="1"]')).forEach(
x => x.parentNode.remove(x)
);
JavaScript's way of removing nodes from the document is parent.remove(child)
. As ments say, removing something from an array will not remove them from a document.
Try this code in your local , it will remove the node and need to write the XmlDoc in your xml File finally.
xmlString = '<sports><cricket Team="England"><Players Name="EAA" Flg="0"></Players><Players Name="EAB" Flg="1"></Players></cricket><cricket Team="India"><Players Name="IAA" Flg="0"></Players><Players Name="IAB" Flg="1"></Players></cricket><cricket Team="Aus"><Players Name="AAA" Flg="0"></Players><Players Name="AAB" Flg="1"></Players></cricket></sports>'
var parser, xmlDoc;
parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlString, "text/xml");
var tag = xmlDoc.getElementsByTagName("cricket");
for (x in tag) {
for (y in tag[x].childNodes) {
node = tag[x].childNodes[y];
for (attr in node.attributes) {
if ((node.attributes[attr].nodeName == "Flg") && (node.attributes[attr].nodeValue == "1"))
node.remove();
}
}
}
console.log(xmlDoc);
Another way:
xmlString = '<sports><cricket Team="England"><Players Name="EAA" Flg="0"></Players><Players Name="EAB" Flg="1"></Players></cricket><cricket Team="India"><Players Name="IAA" Flg="0"></Players><Players Name="IAB" Flg="1"></Players></cricket><cricket Team="Aus"><Players Name="AAA" Flg="0"></Players><Players Name="AAB" Flg="1"></Players></cricket></sports>'
var parser, xmlDoc;
parser = new DOMParser();
xmlDoc = parser.parseFromString(xmlString, "text/xml");
var tag = xmlDoc.querySelectorAll("Players[Flg='1']");
var f=Array.from(tag);
f.forEach(x=>x.remove());
console.log(xmlDoc);
本文标签: javascriptHow to remove some particular tag from XMLStack Overflow
版权声明:本文标题:javascript - How to remove some particular tag from XML - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745546216a2662716.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论