【问题标题】:How to convert xml to json on nodejs app如何在nodejs应用程序上将xml转换为json
【发布时间】:2016-03-12 03:03:48
【问题描述】:

我已经阅读了这篇文章http://goessner.net/download/prj/jsonxml/,它清楚地解释了如何进行转换,但由于某种原因它对我不起作用。

让我与你分享代码:

   function parseXml(xml) {
    var dom = null;
    if (window.DOMParser) {
      try {
        dom = (new DOMParser()).parseFromString(xml, "text/xml");
      }
      catch (e) { dom = null; }
    }
    else if (window.ActiveXObject) {
      try {
        dom = new ActiveXObject('Microsoft.XMLDOM');
        dom.async = false;
        if (!dom.loadXML(xml)) // parse error ..

          window.alert(dom.parseError.reason + dom.parseError.srcText);
      }
      catch (e) { dom = null; }
    }
    else
      alert("cannot parse xml string!");
    return dom;
  }

这是尝试转换为 json 的示例:

var xml = '<e name="value">text</e>',
          dom = parseXml(xml),
          json = xml2json(dom);

我收到一条错误消息,提示“未定义窗口”。好吧,当然我这里没有初始化窗口,我只是不知道该怎么做,因为我在 nodejs 应用程序中。

还有你可以从文章中看到的 xml2json,因为它太长了,不能在这里发布......

任何建议,将不胜感激......

【问题讨论】:

    标签: javascript json xml node.js


    【解决方案1】:

    您的问题是您正在访问 window 对象以获取 DOMParser 或 Microsoft.XMLDom ActiveX 对象。此代码旨在用于浏览器,需要满足不同的浏览器类型等要求。

    因为你在nodejs,你可以大大简化这个。首先,您需要能够将 XML 解析为类似XMLDom 的对象。有几个——我没用过,但是快速谷歌找到了xmldom。还有其他的,所以环顾四周,看看你觉得适合你和你的项目的。

    一旦您将它安装到您的项目中,如下代码 (Untested) 应该可以工作:

    function parseXml(xml) {
      var DOMParser = require('xmldom').DOMParser;
      try {
        return new DOMParser().parseFromString(xml, "text/xml");
      }
      catch (e) { 
        return null; 
      }
    }
    

    这将提供一个 DOMParsed-equivalent,然后可以通过 json2xml 读取。

    【讨论】:

      猜你喜欢
      • 2017-05-28
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 2016-10-23
      • 1970-01-01
      相关资源
      最近更新 更多