Преобразование String в XML-документ в JavaScript

Посмотрите этот пример на странице примеров jQuery для Ajax:

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

Как взять строку, например:

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

И преобразовать это в объект XML DOM? кросс-браузер?

UPDATE: Пожалуйста, см. Комментарии к ответу karim79.

Ответ 1

Оберните его в объект jQuery. Затем используйте jQuery обычные методы манипуляции DOM на нем.

var t = $('<foo><bar>something</bar></foo>');

//loop over 'bar' nodes
t.find('bar').each(function () {
    alert($(this).text());
});

Если вы хотите преобразовать его обратно в обычную строку (после ее модификации, например), вы можете сделать это так:

//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: $. Руководство ajax говорит (в опции processData):

По умолчанию данные передаются в данные вариант как объект (технически, ничего, кроме строки) будет обрабатывается и преобразуется в запрос строка, установка по умолчанию Тип содержимого "Применение/х-WWW-форм-urlencoded". Если вы хотите отправить DOMDocuments или другие не обработанные данные, установите это параметр false.

Итак, если вы передаете объект jQuery на сервер, вам нужно установить значение true или вообще опустить его (для него установлено значение true по умолчанию). Надеюсь, что это помогло.

Ответ 2

Просто нажимайте на вызов find - если это элемент верхнего уровня, вам нужно использовать фильтр.

var t = $('<foo><bar>something</bar></foo>');

//loop over 'foo' nodes
t.filter('foo').each(function () {
  alert($(this).find('bar').text());
});

Ответ 3

вы можете использовать этот простой код для преобразования ваших тегов xml в текст

var temp_var = $("<p/>").append($(your_xml_data)).htML()

Ответ 4

твердый код. отлично работает во всех браузерах.

var xmlFields = $("<root><reports name='report 1'><item 
               field='ord_num' desc='Order    Number'/></reports></root>");
alert(xmlFields[0].outerHTML);