2011-08-16 60 views
6

我试图抓住一个xml节点的属性。有没有一种方法可以通过属性获取元素xml?

编辑

我试图使用javascript XML代替的jQuery来检索其属性值的元素。有没有一个简单的方法呢?

+6

不要这样做。这很粗鲁。在抓取它的属性之前尝试对该元素说话。说真的,你能详细说明你的问题吗?你尝试了什么,结果如何? –

+0

我试图得到一个使用javascript而不是jquery.find的元素(“node [id ='1']”) – Wenn

+0

请不要以“Javascript:”为前缀来标题。这就是标签的用途。 –

回答

2

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

这里看看我的演示:http://jsfiddle.net/silkster/eDP5V/

+0

这就是我所做的......我只是想看看是否有另一种更简单的方法。 – Wenn

+0

@Wenn,感谢您的投票! – Silkster

1

我觉得这是JQuery的免费

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; 
} 
+0

你确定这是一个jQuery的免费答案? '$(parentElement)'...? – Brian

+0

哎呦!我在同一个论坛上看到两个.... http://www.codingforums.com/showthread.php?t=26744我测试了两个..似乎为我工作。 – rlemon

+1

所以不完全jQuery免费,但肯定jQuery精简版 - 没有扩展/插件/模块... – Brian

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() 

我们将得到字符串 '约翰' 回来。

相关问题