【发布时间】:2015-05-14 09:09:04
【问题描述】:
我有这段代码可以根据孩子的属性从 xml 列表中删除不需要的项目。
var xmlDoc=loadXMLDoc(filePath);
var unwanted = xmlDoc.querySelectorAll("item > KlasId[id='1']");
Array.prototype.map.call(unwanted, function(element){
element.parentNode.parentNode.removeChild(element.parentNode);
});
这工作得很好,并删除了所有item 具有KlasId 子节点的id=1 节点。
我现在想要的是基于 KlasId value 而不是 attribute (例如值 101010)删除 items,但它在某种程度上不起作用:
var unwanted = xmlDoc.querySelectorAll("item > KlasId[value='101010']");
etc...
我的 XML:
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<dataroot>
<item>
<KlasId id='1'>101010</KlasId>
</item>
<item>
<KlasId id='2'>101010</KlasId>
</item>
<item>
<KlasId id='3'>202020</KlasId>
</item>
</dataroot>
编辑:
function loadXMLDoc(filename)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else // code for IE5 and IE6
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
【问题讨论】:
-
loadXMLDoc是什么? code.google.com/p/dingweiwang/downloads/… 也许? -
loadXMLDoc 加载 xml。它工作得很好。
-
您是在浏览器中执行此操作,还是在 Node 之类的工具中执行此操作?
-
是的,这不是我问的。没关系,你接下来使用
querySelectorAll所以我猜loadXMLDoc返回一个DOM 文档。querySelectorAll接受 CSS 选择器。没有用于按节点值选择的 CSS 选择器。你试图做的事情是不可能的。阅读:stackoverflow.com/questions/4811962/…(您需要自定义 JS。jQuery 有一个contains选择器,例如专门为此)。 -
@JLRishe 浏览器 (Chrome),SergiuParaschiv,抱歉,请检查我的编辑。
标签: javascript xml xpath css-selectors