2011-10-05 3 views
1

J'ai un fichier XML et j'essaie d'en extraire des données. Le fichier XML ressemble à ceAccéder au code XML via JavaScript

<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> 

Mon appel va .ajax comme ça ...

$.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"); 

       }); 
      } 

      }); 

Qu'est-ce que je fais mal ici? Quelqu'un peut-il s'il vous plaît signaler.

+0

ce qui va mal .. s'il vous plaît élaborer votre question ... – Varun

+0

son très difficile de détecter l'erreur sans votre aide pouvez-vous s'il vous plaît préciser où obtenez-vous l'erreur ou quel est le comportement attendu qui n'est pas atteint – Rafay

+0

#Varun . comme vous voyez l'alerte là-bas, son coming up vide. – ragsonWeb

Répondre

1

Lorsque vous essayez de sélectionner la balise suivante:

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

Au lieu d'utiliser $(this).find('name') vous devez utiliser $(this).find('str[name="name"]')

Cette erreur apparaît plusieurs fois, pour chaque balise str.

1

Vous devez analyser votre fichier XML avant de l'utiliser (inutile de le faire si votre appel ajax renvoie xml). attention:

  1. noms Tag: vous cherchez un élément <document> alors que vous avez <doc> éléments
  2. Attributs et variables sont des choses différentes. trouver (« name ») recherche une étiquette , pas un attribut name:

Voir here pour un exemple de travail (mon xml est une chaîne locale, mais vous pouvez facilement adapter le script) et here for parseXML documentation et xml exemples d'utilisation.

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

Vous pouvez utiliser Jquery parse xml pour naviguer dans le 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

votre xml n'est pas bien formé, jamais utiliser les méthodes traversal DOM pour analyser le XML, il devient dépendant navigateur, utilisez toujours une sorte d'analyseur norme par exemple en jquery vous pouvez utiliser .parseXML, en vous appel succès try

success : function(data) { 
    var xml=data; 
    xmlDoc = $.parseXML(xml), 
    $xml = $(xmlDoc); 

    $.each($xml.find("str"),function(){ 
    alert($(this).attr("name")); 
    }); 
} 

DEMO