2010-11-17 8 views

Répondre

5
+10

Le problème avec la bibliothèque de Goessner est qu'elle renvoie une chaîne JSON. Vous finirez par convertir une chaîne XML en une chaîne JSON, que vous devrez alors analyser _again_ pour obtenir un objet Javascript réel. Cela fonctionnerait, mais il y a probablement une façon plus efficace de le faire. – nullability

0

Le xml2json fichier javascript de https://bitbucket.org/surenrao/xml2json est tout ce que vous devez faire.

Voici le lien de téléchargement pour le téléchargement rapide: https://bitbucket.org/surenrao/xml2json/get/0e0989dfe48e.zip

Une fois inclus dans votre projet, voici quelques exemples de code pour vous aider à démarrer:

var xmlStr = "<root><person><name>Bob Dylan</name></person></root>"; 
var jsObj = X2J.parseXml(xmlStr); 
var result = jsObj[0].root[0].person[0].name[0].jValue; //Bob Dylan 
20

parse XML et renvoie un objet javascript w/un système cela correspond au xml. xml frères et sœurs w/le même nom sont regroupés dans des tableaux. Les nœuds avec des noms qui peuvent être trouvés dans le paramètre arrayTags (tableau de chaînes de noms de points) affichent toujours des tableaux même dans le cas d'une seule occurrence de tag. arrayTags peut être omis. nœuds de texte w/seuls les espaces sont supprimés. utilisez console.log (parseXml (myxml)) pour explorer la sortie

parseXml(xml, arrayTags) 
{ 
    var dom = null; 
    if (window.DOMParser) 
    { 
     dom = (new DOMParser()).parseFromString(xml, "text/xml"); 
    } 
    else if (window.ActiveXObject) 
    { 
     dom = new ActiveXObject('Microsoft.XMLDOM'); 
     dom.async = false; 
     if (!dom.loadXML(xml)) 
     { 
      throw dom.parseError.reason + " " + dom.parseError.srcText; 
     } 
    } 
    else 
    { 
     throw "cannot parse xml string!"; 
    } 

    function isArray(o) 
    { 
     return Object.prototype.toString.apply(o) === '[object Array]'; 
    } 

    function parseNode(xmlNode, result) 
    { 
     if (xmlNode.nodeName == "#text") { 
      var v = xmlNode.nodeValue; 
      if (v.trim()) { 
       result['#text'] = v; 
      } 
      return; 
     } 

     var jsonNode = {}; 
     var existing = result[xmlNode.nodeName]; 
     if(existing) 
     { 
      if(!isArray(existing)) 
      { 
       result[xmlNode.nodeName] = [existing, jsonNode]; 
      } 
      else 
      { 
       result[xmlNode.nodeName].push(jsonNode); 
      } 
     } 
     else 
     { 
      if(arrayTags && arrayTags.indexOf(xmlNode.nodeName) != -1) 
      { 
       result[xmlNode.nodeName] = [jsonNode]; 
      } 
      else 
      { 
       result[xmlNode.nodeName] = jsonNode; 
      } 
     } 

     if(xmlNode.attributes) 
     { 
      var length = xmlNode.attributes.length; 
      for(var i = 0; i < length; i++) 
      { 
       var attribute = xmlNode.attributes[i]; 
       jsonNode[attribute.nodeName] = attribute.nodeValue; 
      } 
     } 

     var length = xmlNode.childNodes.length; 
     for(var i = 0; i < length; i++) 
     { 
      parseNode(xmlNode.childNodes[i], jsonNode); 
     } 
    } 

    var result = {}; 
    if(dom.childNodes.length) 
    { 
     parseNode(dom.childNodes[0], result); 
    } 

    return result; 
} 
+1

Salut Maylow, Bienvenue à SO, Il sera plus utile si vous pouvez fournir une petite description avec vos réponses, –

+2

heureux maintenant? ..... –

+1

: D .... Nice .... Merci ...: D +1 pour cet effort –