web-dev-qa-db-fra.com

Comment convertir une chaîne en objet XML en JavaScript?

Je suis conscient de cette question déjà existante, mais cela ne m'a pas donné de chance.

J'ai une application qui charge un document XML physique via la méthode suivante:

jQuery.ajax({
    type: "GET",
    url: fileName,
    dataType: "xml",
    success: function (data) {
        // etc...
    }
});

J'analyse le XML et le convertis en une chaîne qui est enregistrée dans une variable afin qu'il puisse facilement être stocké dans une base de données. Comment puis-je maintenant reconvertir les données de cette variable en un objet XML afin qu'elles puissent être analysées en tant que telles?

26
Jack Roscoe

Version non jQuery:

var parseXml;

if (window.DOMParser) {
    parseXml = function(xmlStr) {
        return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
    };
} else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) {
    parseXml = function(xmlStr) {
        var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(xmlStr);
        return xmlDoc;
    };
} else {
    parseXml = function() { return null; }
}

var xmlDoc = parseXml("<foo>Stuff</foo>");
if (xmlDoc) {
    window.alert(xmlDoc.documentElement.nodeName);
}

Depuis jQuery 1.5, vous pouvez utiliser jQuery.parseXML() , qui fonctionne exactement de la même manière que le code ci-dessus:

var xmlDoc = jQuery.parseXML("<foo>Stuff</foo>");
if (xmlDoc) {
    window.alert(xmlDoc.documentElement.nodeName);
}
66
Tim Down

Avec jquery, vous pouvez utiliser $.parseXML(str), https://api.jquery.com/jQuery.parseXML/

5
artrol

S'il est toujours au format XML, vous devriez pouvoir l'envelopper dans la fonction jQuery et commencer à utiliser jQuery pour l'analyser. Par exemple:

$(xmlStringFromDB).find('foo');
3
patrickmcgraw