Как создать XMLDocument из результата jQuery.find () - PullRequest
2 голосов
/ 02 февраля 2012

Я загрузил два XML-документа с использованием jQuery $ .ajax () и сериализовал каждый в строку, выполнил несколько манипуляций со строками, соединил две строки вместе, обернул их в узел, обнаружил дочерние узлы, используя $ .find () и теперь хотим преобразовать результат $ .find () обратно в XMLDocument.

Очень сокращенный пример:

$.isXMLDoc(xmlDocument1); // returns true
$.isXMLDoc(xmlDocument2); // returns true

var xml1Str = (new XMLSerializer()).serializeToString(xmlDocument1);
var xml2Str = (new XMLSerializer()).serializeToString(xmlDocument2);

var xml1And2Str = "<root>" + xml1Str + xml2Str + "</root>";
var xml1And2Doc = $.parseXML(xml1And2Str);
$.isXMLDoc(xml1And2Doc); // returns true

var $oneNode = $(xml1And2Doc).find("oneNodeName");

Где-то внутри xml1And2Doc есть единственный дочерний элемент xml, который выглядит как <oneNodeName>...</oneNodeName>. Последнее утверждение находит, что для меня, а затем я могу успешно использовать его, а затем я хочу преобразовать его в XMLDocument. Как я могу конвертировать $oneNode в XMLDocument?

Есть примеры, которые дополняют это, но я полагаю, что мне здесь не хватает чего-то фундаментального в отношении jQuery или результатов find (), что лишает меня возможности преобразовать это в XMLDocument.

Ссылки:

Ответы [ 2 ]

0 голосов
/ 02 февраля 2012

Вот решение .После вызова $(xml1And2Doc).find("oneNodeName") вам нужно получить первый элемент в массиве, который возвращает jQuery.Вот фрагмент кода:

var $oneNode = $(xml1And2Doc).find("oneNodeName")[0]; //finds and selects first object
var aString = (new XMLSerializer()).serializeToString($oneNode);

jQuery по умолчанию возвращает коллекцию элементов DOM см. .Таким образом, доступ к первому элементу в порядке с $ oneNode [0], но если возможно, что существует более одного из этих элементов, вы можете сделать это:

var $oneNodes = $(xml1And2Doc).find("oneNodeName"); //finds set of objects
$.each($oneNodes, function (index) {
    var aString = (new XMLSerializer()).serializeToString($oneNodes[index]);
});
0 голосов
/ 02 февраля 2012

Если у вас есть XML-узлы, найденные с .find(), вы можете сделать следующее, чтобы преобразовать их в XML-документ:

var xmlString  = $('<div>').append($oneNode.clone()).remove().html(),
    oneNodeDoc = $.parseXML(xmlString);

Таким образом, вы сначала конвертируете элемент jQuery в строку (в строку HTML), а затем применяете $.parseXML к нему.

...