2011-10-05 101 views
1

我有一个XML文件,并试图从中提取数据。 XML文件看起来像这样通过JavaScript访问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({ 
      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

最新情况..请详细说明您的问题...... – Varun

+0

如果没有您的帮助,很难发现错误请指出您在哪里得到错误或未达到预期行为 – Rafay

+0

#Varun 。当你在那里看到警戒时,它就会空着。 – ragsonWeb

回答

1

当你试图选择以下标签:

<str name="name">Rocky</str> 

而不是使用$(this).find('name')的你应该使用$(this).find('str[name="name"]')

对于每个str标签,此错误会出现很多次。

1

你应该在使用它之前解析你的xml(如果你的ajax调用返回xml,不需要这样做)。 要注意:

  1. 标签名称:你找一个<document>元素,而你有<doc> 元素
  2. 属性和标签是不同的东西。找到(“名”)寻找一个 标签,而不是一个name属性:

的工作示例见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()); 
0

您可以使用Jquery parse 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()) 
    }) 
}) 
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")); 
    }); 
} 

DEMO