我正在尝试按其属性获取xml节点。
修改
我正在尝试使用javascript xml而不是jquery通过其属性值检索元素。有一个简单的方法吗?
答案 0 :(得分:3)
您必须先找到元素列表,然后按其属性进行过滤。
答案 1 :(得分:1)
jquery可以很容易地做到这一点。 http://think2loud.com/224-reading-xml-with-jquery/
答案 2 :(得分:1)
我觉得这是一个新的答案,因为它是JQuery Free
document.getElementsByAttribute = function(attribute, value, tagName, parentElement) {
var children = ($(parentElement) || document.body).getElementsByTagName((tagName || '*'));
return $A(children).inject([], function(elements, child) {
var attributeValue = child.getAttribute(attribute);
if(attributeValue != null) {
if(!value || attributeValue == value) {
elements.push(child);
}
}
return elements;
});
}
我已经向我指出我发布了错误的脚本..呵呵阅读here
// document.getElementsByAttribute([string attributeName],[string attributeValue],[boolean isCommaHyphenOrSpaceSeparatedList:false])
document.getElementsByAttribute=function(attrN,attrV,multi){
attrV=attrV.replace(/\|/g,'\\|').replace(/\[/g,'\\[').replace(/\(/g,'\\(').replace(/\+/g,'\\+').replace(/\./g,'\\.').replace(/\*/g,'\\*').replace(/\?/g,'\\?').replace(/\//g,'\\/');
var
multi=typeof multi!='undefined'?
multi:
false,
cIterate=document.getElementsByTagName('*'),
aResponse=[],
attr,
re=new RegExp(multi?'\\b'+attrV+'\\b':'^'+attrV+'$'),
i=0,
elm;
while((elm=cIterate.item(i++))){
attr=elm.getAttributeNode(attrN);
if(attr &&
attr.specified &&
re.test(attr.value)
)
aResponse.push(elm);
}
return aResponse;
}
答案 3 :(得分:1)
使用jQuery非常简单。假设我们有这样的字符串。
<document>
<value type="people">
<name>
John
</name>
</value>
<value type="vehicle">
<name>
Ford
</name>
</value>
</document>
然后
var xmlDocument = $.parseXML(str);
$(xmlDocument).find("value[type='people'] name").text()
我们将收回字符串'John'。