如何使用Jquery从XML文件中打印每个值?

时间:2011-08-18 00:04:00

标签: jquery xml

任何人都知道如何使用Jquery浏览XML文件并仅从其中包含文本值的标记打印标记名称和文本值?

示例,html输出如:

id: 00130000004EQCpAAO
updated: 2011-08-16 19:40:51
account_type: Vendor Other
active: 1
someprop_d: 0

来自XML,如:

<accounts>
    <id>00130000004EQCpAAO</id>
    <updated>2011-08-16 19:40:51</updated>
    <account_type>Vendor Other</account_type>
    <someprop_a/>
    <active_c>1</active_c>
    <someprob_b/>
    <someprop_c/>
    <someprop_d>0</someprop_d>
</accounts>

Jquery:

var mystr = $.ajax({
    type: 'GET',
    url: '/js/data_account.xml',
    async: false,
    data: {
        key: "value"
    },
    dataType: "xml",
    success: function(data) {
        var xml = $(data)
        //var $accountid = xml.find("id").text();
        // do something relevant here
        //return something;
    },
    error: function() {
        alert("error: call failed");
    }
});
$('parentElement').append(mystr);

3 个答案:

答案 0 :(得分:4)

您可以查看.nodeName属性的值以获取标记名称,并使用.text()来获取文本内容。例如:

var idNode = xml.find("id");
var nodeName = idNode[0].nodeName;
var nodeText = idNode.text();

您可以迭代xml并获得所需的输出:

xml.find("accounts > *").each(function () {
    var text = $(this).text();
    if (text) {
        $("#xmlOutput").append($("<div>").text(this.nodeName + ": " + text));
    }
});

工作演示: http://jsfiddle.net/gilly3/KYWCK/

答案 1 :(得分:0)

我认为您可以在jquery上使用contents方法并检查文本节点的nodetype。您可以在此处了解内容方法:http://api.jquery.com/contents/

此处还可以找到nodeType定义:https://developer.mozilla.org/en/nodeType

类似的东西:

var textNodes = $(data).contents().filter(function() {
  return this.nodeType == 3;
})

答案 2 :(得分:0)

$(xml).find('accounts').each(function(){
  var $accountid =  $(this).find('id').text();
  alert($accountid);
});