使用jquery获取xml所有属性

时间:2014-05-14 06:48:14

标签: jquery xml

我想从xml文件中获取属性值,我使用以下代码来获取属性值:

var result=$(xml).find("segment[id=1]").attr("name");

但是因为它是attr的定义,它只返回第一个值。我需要所有的attrib值,我在xml解析中研究了.each()函数。但我没有得到所有属性。 xml如下: -

<?xml version="1.0" encoding="UTF-8"?>
    <code_gen>
     <segment id="1" name="POS">POS.txt</segment>
     <segment id="1" name="On_Off">on_off.txt</segment>
     <segment id="1" name="Sellert">seller.txt</segment>
     <segment id="1" name="Cross_Border">cross.txt</segment>
     <segment id="1" name="NA">NA.txt</segment>
    </code_gen>

3 个答案:

答案 0 :(得分:2)

您可以使用.map().get()来获取数组格式的所有名称属性

尝试,

var allNames = $(xml)
                 .find("segment[id=1]")
                   .map(function(){ 
                     return $(this).attr('name'); 
                   }).get();

答案 1 :(得分:0)

您应该使用.each()迭代匹配选择器中的多个元素:

 var allName=[];
 $(xml).find("segment[id=1]").each(function(){
    allName.push($(this).attr("name"));
 })

答案 2 :(得分:0)

Vanilla JS

var atr = document.getElementById("someId").attributes;
var arr = [];
for (var i=0, l=atr.length; i<l; i++){
//    arr.push(atr.item(i).nodeName); // attribute name
    arr.push(atr.item(i).nodeValue); // attribute value
}

JQuery的

 var attributes = {}; 
$('#some_id')[0].attributes.each(function( index, attr ) {
                attributes[ attr.name ] = attr.value;
            });