大多数在线示例都有一个javascript,它使用evaluate方法调用xml文档,该方法传递xpath并返回特定的节点值。 我需要获取xpath中匹配节点值的所有父元素。
例如:
user.xml:
<users>
<user>
<Id>0</Id>
<Name>Bob</Name>
</user>
<user>
<Id>1</Id>
<Name>Keith</Name>
</user>
<user>
<Id>2</Id>
<Name>John</Name>
</user>
<users>
的javascript:
xhttp=new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
showResult(xhttp.responseXML);
}
};
xhttp.open("GET", "user.xml", false);
xhttp.send();
function showResult(xml) {
var txt = "";
path = "/users/user[Id>0]/Id";
if (xml.evaluate) {
var nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
var result = nodes.iterateNext();
while (result) {
txt += result.childNodes[0].nodeValue + "<br>";
result = nodes.iterateNext();
}
// Code For Internet Explorer
} else if (window.ActiveXObject || xhttp.responseType == "msxml-document") {
xml.setProperty("SelectionLanguage", "XPath");
nodes = xml.selectNodes(path);
for (i = 0; i < nodes.length; i++) {
txt += nodes[i].childNodes[0].nodeValue + "<br>";
}
}
}
预期结果:我需要获取xml(var users= xmlDoc.documentElement.getElementsByTagName("user");
,但根据值进行过滤)
<users>
<user>
<Id>1</Id>
<Name>Keith</Name>
</user>
<user>
<Id>2</Id>
<Name>John</Name>
</user>
<users>
由于我没有得到任何答案,我简化了我的问题。
如何编写xpath以获取匹配节点的父节点。 我试过// * [Id ='1'],但它返回
<user><Id>1</Id>..</user>.
我还需要包括
<users></users>
答案 0 :(得分:0)
我想,您必须从getElementsByTagName返回的集合中进行迭代,并与您的值进行比较以过滤掉项目。