Вы могли разработать свой класс, чтобы быть неизменными (Эффективный Java 2-й Ed. имеет большой раздел по этому, Объект 15: Минимизируйте переменчивость), и удостоверьтесь на конструкцию, что никакой не аннулирует, возможны (и используйте шаблон несуществующего объекта в случае необходимости). Затем можно пропустить все те проверки и безопасно предположить, что значения не являются нулевыми.
Оберните его в объект 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 по умолчанию). Надеюсь, это помогло.
Предупреждаем при вызове find - если это элемент верхнего уровня, вам нужно вместо него использовать фильтр.
var t = $('<foo><bar>something</bar></foo>');
//loop over 'foo' nodes
t.filter('foo').each(function () {
alert($(this).find('bar').text());
});