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

Вы могли разработать свой класс, чтобы быть неизменными (Эффективный Java 2-й Ed. имеет большой раздел по этому, Объект 15: Минимизируйте переменчивость), и удостоверьтесь на конструкцию, что никакой не аннулирует, возможны (и используйте шаблон несуществующего объекта в случае необходимости). Затем можно пропустить все те проверки и безопасно предположить, что значения не являются нулевыми.

21
задан BuddyJoe 17 August 2009 в 21:29
поделиться

2 ответа

Оберните его в объект 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);
}

EDIT: $. Ajax в руководстве указано (о параметре processData):

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

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

35
ответ дан 29 November 2019 в 20:09
поделиться

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

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

//loop over 'foo' nodes
t.filter('foo').each(function () {
  alert($(this).find('bar').text());
});
11
ответ дан 29 November 2019 в 20:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: