Преобразование строки в 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? кросс-браузер?
обновление: Пожалуйста, см. Комментарий к ответ karim79 по.
5 ответов
оберните его в объект jQuery. Затем используйте на нем обычные методы манипуляции DOM jQuery.
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);
}
"правка":$.руководство "Аякса" говорит (опцию processData):
по умолчанию данные передаются в данные опция как объект (технически, ничего кроме string) будет обработано и преобразован в запрос строка, соответствующая умолчанию тип содержимого "application / x-www-form-urlencoded". Если вы хотите отправить DOMDocuments, или другие необработанные данные, установите это параметр в false.
поэтому, если вы передаете объект jQuery на сервер, вам нужно установить это в правда, или опустить его вообще (он установлен в правда по умолчанию). Надеюсь, это помогло.
просто предупреждает о вызове find-если это элемент верхнего уровня, вам нужно использовать фильтр.
var t = $('<foo><bar>something</bar></foo>');
//loop over 'foo' nodes
t.filter('foo').each(function () {
alert($(this).find('bar').text());
});
вы можете выполнить преобразование без jQuery. Это взято из Mozilla Документация DOMParser:
// Create a DOMParser
var parser = new DOMParser();
// Use it to turn your xmlString into an XMLDocument
var xmlDoc = parser.parseFromString(xmlString, "application/xml");
вы можете использовать этот простой код для преобразования тегов xml в текст
var temp_var = $("<p/>").append($(your_xml_data)).htML()
код rock solid. отлично работает во всех браузерах.
var xmlFields = $("<root><reports name='report 1'><item
field='ord_num' desc='Order Number'/></reports></root>");
alert(xmlFields[0].outerHTML);