如何从jQuery.find()结果创建XMLDocument

时间:2012-02-02 17:36:39

标签: javascript jquery xml xml-serialization xmldocument

我使用jQuery的$ .ajax()加载了两个XML文档,并将每个文档序列化为字符串,执行了一些字符串操作,将两个字符串组合在一起,将它们包装在一个节点中,使用$ .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 :(得分:0)

当您使用.find()找到XML节点时,可以执行以下操作将其转换为XML文档:

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

所以你首先将jQuery元素转换为字符串(转换为HTML字符串),然后将$.parseXML应用于它。

答案 1 :(得分:0)

这是solution。在调用$(xml1And2Doc).find("oneNodeName")之后,您需要获取jQuery返回的数组中的第一个元素。这是一个片段:

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

jQuery默认返回DOM元素see的集合。因此,使用$ oneNode [0]访问第一个元素是可以的,但是如果可能有多个元素可以执行此操作:

var $oneNodes = $(xml1And2Doc).find("oneNodeName"); //finds set of objects
$.each($oneNodes, function (index) {
    var aString = (new XMLSerializer()).serializeToString($oneNodes[index]);
});