Convert String to XML Document in JavaScript

后端 未结 5 1495
一生所求
一生所求 2020-11-27 05:52

Saw this example on the jQuery examples page for Ajax:

var xmlDocument = [create xml document];
$.ajax({
        url: \"page.php\",
        processData: fa         


        
相关标签:
5条回答
  • 2020-11-27 05:59

    Just a heads up on calling find - if it's a top level element you need to use filter instead.

    var t = $('<foo><bar>something</bar></foo>');
    
    //loop over 'foo' nodes
    t.filter('foo').each(function () {
      alert($(this).find('bar').text());
    });
    
    0 讨论(0)
  • 2020-11-27 06:03

    You can do the conversion without jQuery. This is taken from Mozilla's DOMParser Documentation:

    // Create a DOMParser
    var parser = new DOMParser();
    
    // Use it to turn your xmlString into an XMLDocument
    var xmlDoc = parser.parseFromString(xmlString, "application/xml");
    
    0 讨论(0)
  • 2020-11-27 06:06

    rock solid code. working perfectly in all browsers.

    var xmlFields = $("<root><reports name='report 1'><item 
                   field='ord_num' desc='Order    Number'/></reports></root>");
    alert(xmlFields[0].outerHTML);
    
    0 讨论(0)
  • 2020-11-27 06:11

    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.

    0 讨论(0)
  • 2020-11-27 06:13

    you can use this simple code for convert your xml tags to text

    var temp_var = $("<p/>").append($(your_xml_data)).htML()
    
    0 讨论(0)
提交回复
热议问题