Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert String to XML Document in JavaScript

Tags:

Saw this example on the jQuery examples page for Ajax:

var xmlDocument = [create xml document]; $.ajax({         url: "page.php",         processData: false,         data: xmlDocument,         success: someFunction     }); 

How do I take a string like:

var t = '<foo><bar>something</bar></foo>';   

And convert that to a XML DOM object? cross-browser?

UPDATE: Please see comments to karim79's answer.

like image 688
BuddyJoe Avatar asked Aug 17 '09 20:08

BuddyJoe


People also ask

Can we convert string to XML in Java?

For converting the string to xml document, we can use DocumentBuilderFactory and DocumentBuilder classes.

What is DOM parser in XML?

Android DOM(Document Object Model) parser is a program that parses an XML document and extracts the required information from it. This parser uses an object-based approach for creating and parsing the XML files. In General, a DOM parser loads the XML file into the Android memory to parse the XML document.

What is SAX in Java?

SAX (Simple API for XML) is an event-based parser for XML documents. Unlike a DOM parser, a SAX parser creates no parse tree.

What is XML formatting?

What is XML? The Extensible Markup Language (XML) is a simple text-based format for representing structured information: documents, data, configuration, books, transactions, invoices, and much more. It was derived from an older standard format called SGML (ISO 8879), in order to be more suitable for Web use.


1 Answers

Wrap it in a jQuery object. Then use jQuery's normal DOM manipulation methods on it.

var t = $('<foo><bar>something</bar></foo>');  //loop over 'bar' nodes t.find('bar').each(function () {     alert($(this).text()); }); 

If you want to convert it back to a plain string (after modifying it for example) you can do it like so:

//then convert it back to a string //for IE  if (window.ActiveXObject) {     var str = t.xml;     alert(str);  } // code for Mozilla, Firefox, Opera, etc. else {    var str = (new XMLSerializer()).serializeToString(t);    alert(str); } 

EDIT: The $.ajax manual says (on the processData option):

By default, data passed in to the data option as an object (technically, anything other than a string) will be processed and transformed into a query string, fitting to the default content-type "application/x-www-form-urlencoded". If you want to send DOMDocuments, or other non-processed data, set this option to false.

So if you're passing a jQuery object to the server, you'll need to set that to true, or omit it altogether (it is set to true by default). Hope that helped.

like image 108
karim79 Avatar answered Oct 26 '22 20:10

karim79