33

I am aware of this question already existing, but it has given me no luck.

I have an application which loads a physicial XML document via the following method:

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

I parse the XML and convert it into a string which is saved into a variable so that it can easily be stored in a database. How can I now convert the data in this variable back into an XML object so that it can be parsed as such?

1
  • what's your data might look like? Commented Jun 16, 2010 at 14:26

3 Answers 3

74

Non-jQuery version:

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);
}

Since jQuery 1.5, you can use jQuery.parseXML(), which works in exactly the same way as the above code:

var xmlDoc = jQuery.parseXML("<foo>Stuff</foo>");
if (xmlDoc) {
    window.alert(xmlDoc.documentElement.nodeName);
}
Sign up to request clarification or add additional context in comments.

5 Comments

+1 It's not just non-jQuery, this actually parses XML properly, unlike the jQuery parser.
I was actually looking for a jQuery solution, although I know I did not specify. I found your answer very useful though, had not considered this method before.
+1 in addition to Anurags's comment: jQuery messed up my valid XML (created document was just wrong) and is not a valid solution for parsing XML! It can be used to query the document, but not to create it properly
isn't ActiveXObject deprecated in most modern browsers?
@mmcrae: I believe it only ever worked in IE on Windows. The ActiveX branch is there as a fallback for versions of IE (version 9 and onwards have DOMParser), which was more of a concern in 2010 than it is now.
7

With jquery, you can use $.parseXML(str), https://api.jquery.com/jQuery.parseXML/

Comments

3

If it's still in XML format you should be able to just wrap it in the jQuery function and start using jQuery to parse through it. For example:

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

1 Comment

If xmlStringFromDB is still a string, then that would force a string to XML each time you use it. If you need it just once, or can link all your request, you're certainly fine, but otherwise you should save that in a (temporary) variable.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.