我使用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。
参考文献:
答案 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]);
});