我有一个XML文件,我正试图从中提取数据。 XML文件看起来像这样
<doc>
<str name="name">Rocky</str>
<str name="Last_name">balboa</str>
<str name="age">42</str>
<str name="sex">M</str>
<str name="dob">2012-09-09</str>
</doc>
<doc>... </doc>
<doc>... </doc>
<doc>... </doc>
我的.ajax电话就是这样......
$.ajax({
type : "GET",
url : "my.xml",
dataType : "xml",
success : function(data) {
$(data).find('doc').each(function() {
alert("i was here");
var u1 = $(this).find('name').text();alert(u1);
var u2 = $(this).find('last_name').text();
var finale1 = u1 + "/" + u2;
var dt = $(this).find('dob').text();
var dt1 = dt.substr(0,4);
var desc = $(this).find('age').text();
alert("i am here");
});
}
});
我在这里做错了什么?任何人都可以指出。
答案 0 :(得分:1)
你应该在使用之前解析你的xml (如果你的ajax调用返回xml,则不需要这样做)。
注意:
<document>
元素,而您有<doc>
元素有关工作示例,请参阅here(我的xml是本地字符串,但您可以轻松调整脚本)和here for parseXML documentation以及xml用法示例。
var xml = "<doc><str name=\"name\">Rocky</str><str name=\"sex\">M</str><str name=\"dob\">2012-09-09</str></doc>",
xmlDoc = $.parseXML( xml ),
xml = $( xmlDoc ),
name = xml.find( "str[name='name']" );
alert (name.text());
答案 1 :(得分:1)
当您尝试选择以下标记时:
<str name="name">Rocky</str>
您应该使用$(this).find('name')
$(this).find('str[name="name"]')
对于每个str标记,此错误多次出现。
答案 2 :(得分:0)
您可以使用Jquery解析xml来导航dom,例如http://jsfiddle.net/qd2xY/
var xml = '<docs><doc><str name="name">Rocky</str><str name="Last_name">balboa</str><str name="age">42</str><str name="sex">M</str><str name="dob">2012-09-09</str></doc><doc><str name="name">Rocky1</str></doc></docs>';
$(document).ready(function(){
xmlDoc = $.parseXML(xml);
$xml = $( xmlDoc ),
$xml.find('doc').each(function(){
alert($(this).find('str[name="name"]').text())
})
})
答案 3 :(得分:0)
你的xml格式不正确,也从不使用DOM遍历方法来解析它依赖于浏览器的XML,总是使用某种标准的解析器,例如:在jquery中你可以使用.parseXML
,在你成功回调试试
success : function(data) {
var xml=data;
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc );
$.each($xml.find("str"),function(){
alert($(this).attr("name"));
});
}