如何在nodejs app

时间:2016-03-12 03:03:49

标签: javascript json xml node.js

我已经通过这篇文章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 app里面。

你可以从文章中看到

和xml2json,因为它太长了,无法发布在这里...

任何建议,都会感激....

1 个答案:

答案 0 :(得分:0)

您的问题是您正在访问window对象以获取DOMParser或Microsoft.XMLDom ActiveX对象。此代码旨在用于浏览器,包含符合不同浏览器类型等所需的所有问题。

因为你在nodejs,所以你可以大大简化这一点。首先,您需要能够将XML解析为类似XMLDom的对象的东西。有几个 - 我没有使用任何,但快速谷歌找到xmldom。那里还有其他人,所以环顾四周,看看你认为哪种方式适合你和你的项目。

如果您已在项目中安装了该代码,则以下代码(未经测试)应该有效:

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

这将提供一个DOMParsed等效项,然后可以通过json2xml读取。