有没有办法通过属性getElement xml?

时间:2011-08-16 18:44:14

标签: javascript xml

我正在尝试按其属性获取xml节点。

修改

我正在尝试使用javascript xml而不是jquery通过其属性值检索元素。有一个简单的方法吗?

4 个答案:

答案 0 :(得分:3)

您必须先找到元素列表,然后按其属性进行过滤。

点击我的演示:http://jsfiddle.net/silkster/eDP5V/

答案 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;
    });
}

source


我已经向我指出我发布了错误的脚本..呵呵阅读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'。