Je recherche une bibliothèque JavaScript qui analyse une chaîne XML et la convertit en un objet JavaScript. Quels sont les bons?
analyse XML et renvoie un objet javascript avec un schéma qui correspond au xml. xml frères et sœurs avec le même nom sont réduits dans des tableaux. Les nœuds dont le nom se trouve dans le paramètre arrayTags (tableau de chaînes de noms de balises) utilisent toujours des tableaux même si une seule occurrence de balise est trouvée. arrayTags peut être omis. les nœuds de texte avec des espaces uniquement sont ignorés. utilisez console.log (parseXml (myxml)) pour explorer le résultat
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 = {};
for (let i = 0; i < dom.childNodes.length; i++)
{
parseNode(dom.childNodes[i], result);
}
return result;
}
Voici un convertisseur Nice xml2json et json2xml:
En voici un autre:
Selon vos besoins, vous pourrez peut-être utiliser un analyseur standard (voir http://www.w3schools.com/XML/tryit.asp?filename=tryxml_parsertest2 ) et xpath ( http: // www .w3schools.com/xpath/default.asp ) - voici un exemple:
et quelques bons tutoriels:
Le fichier javascript xml2json de https://bitbucket.org/surenrao/xml2json est tout ce dont vous avez besoin pour faire cela.
Voici le lien de téléchargement pour téléchargement rapide: https://bitbucket.org/surenrao/xml2json/get/0e0989dfe48e.Zip
Une fois inclus dans votre projet, voici un exemple 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