2013-08-15 6 views
0

J'ai des problèmes intenses. J'ai trouvé beaucoup de questions similaires et certaines ont fonctionné ... pendant un moment. J'ai donc décidé qu'il était temps de poser ma propre question.Obtenir des informations XML

Je suis en train de charger un fichier XML en utilisant l'API FileReader puis la lecture en tant que chaîne et regarder ensuite pour les éléments et attributs comme ceci:

reader.onload = function (e) { 
     var Library = new String(e.target.result); 
     if (window.DOMParser) { 
      parser = new DOMParser(); 
      xmlDoc = parser.parseFromString(Library, "text/xml"); 
      $(xmlDoc).find('book').each(function() { 

       Pages = []; 
       $(this).find("page").each(function() { 
        Page = []; 
        try { 
         Page[0] = this.getAttributeNode("number").nodeValue; 
         Page[1] = this.getAttributeNode("words").nodeValue; 
        } 
        catch (err) { 
         console.log(err); 
        } 
        Pages.push(Page); 
       }); 
      }); 
     } 
} 

et je continue à obtenir soit TypeError ou ceci:

[09:11:08.523] TypeError: $(...).getAttributeNode is not a function 
+0

Sur quelle ligne l'erreur se produit-elle? –

+1

Votre code semble également être plein d'erreurs de syntaxe; il vous manque des parenthèses fermantes ')'. –

+0

Désolé, il n'y a pas d'erreurs de syntaxe, c'est juste moi en tapant SO La ligne sur laquelle il se produit est celle avec .nodeValue à la fin. – Funkyguy

Répondre

1

Je ne comprends pas pourquoi vous mélangez jQuery ($(this).each(...)) et DOM à faible niveau (.getAttributeNode()). Coller avec jQuery homogène: http://jsfiddle.net/kzcBE

var xmlMarkup = "<example>\n" + 
       " <book>\n" + 
       " <page number='p1' words='1104' />\n" + 
       " <page number='p2' words='1230' />\n" + 
       " </book>\n" + 
       " <book>\n" + 
       " <page number='p1' words='123' />\n" + 
       " <page number='p2' words='145' />\n" + 
       " </book>\n" + 
       "</example>"; 

var Library = new String(xmlMarkup); 
if (window.DOMParser) { 
    parser = new DOMParser(); 
    xmlDoc = parser.parseFromString(Library, "text/xml"); 
    $(xmlDoc).find('book').each(function() { 
     $(this).find("page").each(function() { 
      var numberAttr = $(this).attr("number"); 
      var wordsAttr = $(this).attr("words"); 
      console.log("page number: " + numberAttr); 
      console.log("word count: " + wordsAttr); 
     }); 
    }); 
} 
+0

Merci l'homme! Fonctionne comme un charme – Funkyguy

Questions connexes