任何人都知道如何使用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);
答案 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));
}
});
答案 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);
});