2011-08-16 87 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() 

我們將得到字符串 '約翰' 回來。

相關問題