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

发布于 2025-01-02 15:56:41 字数 1221 浏览 0 评论 0原文

我使用 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 子元素,看起来像 ...。最后一条语句发现对我来说然后我可以成功使用它,然后我想将它转换成XMLDocument。如何将 $oneNode 转换为 XMLDocument

有一些例子可以实现这一点,但我相信我在这里遗漏了一些关于 jQuery 或 find() 结果的基本知识,这使我无法将其转换为 XMLDocument。

参考文献:

I've loaded two XML documents using jQuery's $.ajax() and serialized each to strings, performed a few string manipulations, combined the two strings together, wrapped them in a node, located child nodes using $.find(), and now want to convert the $.find() result back to an XMLDocument.

A much abbreviated example:

$.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");

Somewhere inside of xml1And2Doc there is a single xml child-element that looks like <oneNodeName>...</oneNodeName>. The last statement finds that for me and then I can successfully use it, and afterwards, I want to convert it into an XMLDocument. How can I convert $oneNode to an XMLDocument?

There are examples that build up to this, but I believe I'm missing something fundamental here about jQuery or the find() results, which bar me from being able to convert that to an XMLDocument.

References:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

中二柚 2025-01-09 15:56:41

这是一个解决方案。调用 $(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]);
});

Here is a solution. After calling $(xml1And2Doc).find("oneNodeName") you need to get the first element in the array that jQuery is returning. Here is a snippet:

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

jQuery by default returns a collection of DOM elements see. So accessing the first element is fine with $oneNode[0] but if it's possible for there to be more than one of those elements you could do this:

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

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

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

因此,您首先将 jQuery 元素转换为字符串(HTML 字符串),然后应用 $.parseXML 到它。

When you have your XML nodes found with .find() you can do the following to convert it to the XML Document:

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

So you first convert jQuery element to string (to HTML string) and then apply $.parseXML to it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文