How to query XML string through DOM in jQuery

I would like to take a string and treat it as XML. Then I can query using the DOM via jQuery.find. Everything worked fine in Firefox, but I realized that this did not work in IE.

I'm doing it:

  var t = "<div><outer><inner>abc</inner><inner>def</inner></outer></div>";
  alert("[" + $(t).find("outer").html() + "]");

In Firefox 3, it prints:

[<inner>abc</inner><inner>def</inner>]

In IE 7, it prints:

[]

Any workarounds for working in browsers?

Thank.

+4
source share
8 answers

It was time, but I only realized that I forgot to publish how I solved the problem with your ideas combined.

I needed a completely client database (without PHP).

div HTML , XML. HTML , XML JSON .

   var xmltext = $("#piecelist").comments();
   var json = $.xml2json(xmltext.html());

: http://wesculpt.net/art.html

, jQuery.

.

0

.

+9

XML JSON ( , )? , PHP XML , JSON json_encode. javascript, :

PHP:

<?php
$xml = "<div><outer><inner>abc</inner><inner>def</inner></outer></div>";
$xml_object = simplexml_load_string(xml);
$json = json_encode($xml_object);
?>
<script language="javascript">
$(function() {
    // eval() is okay to use if you know where the JSON is 
    // coming from (and, of course, you do...) 
    var data = eval('<?php echo $json; ?>');
    $(document).data('myapp.data',data);
});
</script>

, , :

function some_function() {
    var data = $(document).data('myapp.data');
    $.each(data.div.outer,function() {
        // Would alert 'abc' then 'def'
        alert(this.inner);
    });
}

, . , XML . , , , :

var xml = "<div><outer><inner>abc</inner><inner>def</inner></outer></div>";
var $xml = $('<div />').append(xml);
alert("[" + $xml.find("outer").html() + "]");

Edit , XML, , - , ( - , ). - .

+4

XML Javascript:

var xmlString = $('<?xml version="1.0"?><Customers><Customer Name="Allan Border" Age="26" ContactNumber="004416165245" Address="Unit # 24 East London" City="London" Country="England"></Customer><Customer Name="Jennifer" Age="28" ContactNumber="004416165248" Address="Unit # 28 West London" City="London" Country="England"></Customer></Customers>');

XML, :

$(xmlString).find("Customer").each(function () {
 var customerName = $(this).attr("Name");
 var age = $(this).attr("Age");
 var contactNumber = $(this).attr("ContactNumber");
 var address = $(this).attr("Address");
 var city = $(this).attr("City");
 var country = $(this).attr("Country");
 });
+3

-, jQuery HTML XML... , , XML , . , , -, :

var xml = "<books><book><title>Title</title></book></books>";
$(xml).appendTo("#hidden");
alert($("#hidden books").length);
+1

Javascript Selenium XML :

function loadXMLFromDOM2XMLString( xmlString, xmltag, currentChildNode ) { 
var nodes = currentChildNode.childNodes; 
var i = 0 ;
var node = nodes[i];
while ( i < nodes.length) {
   if (node.data == null) {xmltag = '<'+node.localName+'>';} else {xmltag = node.data;};
   xmlString = xmlString  + xmltag;
   xmlString = loadXMLFromDOM2XMLString( xmlString, xmltag, node  );   
   if (node.data == null) {xmltag = '<'+'/'+node.localName+'>';} else {xmltag = "";};
   xmlString = xmlString + xmltag;
   i++;
   node = nodes[i];
}
 return xmlString ;
} ;
var xmlString = "";
var xmltag = "";

var currentChildNode = window.document;

xmlString = loadXMLFromDOM2XMLString( xmlString, xmltag, currentChildNode );
xmlString;
+1

xml, .filter, xml node.

this ie8 , .

0

, XML DOM, HTML . jQuery... , . .

0

All Articles