【问题标题】:How to convert string to XML object in JavaScript?如何在 JavaScript 中将字符串转换为 XML 对象?
【发布时间】:2011-03-04 12:05:59
【问题描述】:

我知道this 问题已经存在,但它没有给我带来任何运气。

我有一个通过以下方法加载物理 XML 文档的应用程序:

jQuery.ajax({
    type: "GET",
    url: fileName,
    dataType: "xml",
    success: function (data) {
        // etc...
    }
});

我解析 XML 并将其转换为字符串,该字符串保存到变量中,以便可以轻松地将其存储在数据库中。我现在如何将这个变量中的数据转换回 XML 对象,以便对其进行解析?

【问题讨论】:

  • 您的数据可能是什么样的?

标签: javascript jquery xml


【解决方案1】:

非jQuery版本:

var parseXml;

if (window.DOMParser) {
    parseXml = function(xmlStr) {
        return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
    };
} else if (typeof window.ActiveXObject != "undefined" && new window.ActiveXObject("Microsoft.XMLDOM")) {
    parseXml = function(xmlStr) {
        var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(xmlStr);
        return xmlDoc;
    };
} else {
    parseXml = function() { return null; }
}

var xmlDoc = parseXml("<foo>Stuff</foo>");
if (xmlDoc) {
    window.alert(xmlDoc.documentElement.nodeName);
}

从 jQuery 1.5 开始,您可以使用jQuery.parseXML(),其工作方式与上述代码完全相同:

var xmlDoc = jQuery.parseXML("<foo>Stuff</foo>");
if (xmlDoc) {
    window.alert(xmlDoc.documentElement.nodeName);
}

【讨论】:

  • +1 这不仅仅是非 jQuery,它实际上可以正确解析 XML,这与 jQuery 解析器不同。
  • 我实际上是在寻找一个 jQuery 解决方案,虽然我知道我没有具体说明。我发现您的回答非常有用,以前没有考虑过这种方法。
  • +1 除了 Anurags 的评论:jQuery 搞砸了我的有效 XML(创建的文档是错误的)并且不是解析 XML 的有效解决方案!可以用来查询文档,但不能正确创建文档
  • 大多数现代浏览器不推荐使用 ActiveXObject 吗?
  • @mmcrae:我相信它只在 Windows 上的 IE 中工作过。 ActiveX 分支是 IE 版本的后备(版本 9 及更高版本有 DOMParser),这在 2010 年比现在更受关注。
【解决方案2】:

使用jquery,可以使用$.parseXML(str)https://api.jquery.com/jQuery.parseXML/

【讨论】:

    【解决方案3】:

    如果它仍然是 XML 格式,你应该能够将它包装在 jQuery 函数中并开始使用 jQuery 来解析它。例如:

    $(xmlStringFromDB).find('foo');
    

    【讨论】:

    • 如果 xmlStringFromDB 仍然是一个字符串,那么每次使用它时都会强制将字符串转换为 XML。如果您只需要一次,或者可以链接您的所有请求,那当然没问题,但否则您应该将其保存在(临时)变量中。
    猜你喜欢
    • 2021-08-21
    • 2020-12-30
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 2011-03-12
    相关资源
    最近更新 更多