Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在nodejs应用程序上将xml转换为json_Javascript_Json_Xml_Node.js - Fatal编程技术网

Javascript 如何在nodejs应用程序上将xml转换为json

Javascript 如何在nodejs应用程序上将xml转换为json,javascript,json,xml,node.js,Javascript,Json,Xml,Node.js,我已经阅读了这篇文章,它清楚地解释了如何进行转换,但由于某些原因,它对我不起作用 让我与您分享代码: function parseXml(xml) { var dom = null; if (window.DOMParser) { try { dom = (new DOMParser()).parseFromString(xml, "text/xml"); } catch (e) { dom = null; } }

我已经阅读了这篇文章,它清楚地解释了如何进行转换,但由于某些原因,它对我不起作用

让我与您分享代码:

   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);
var xml='text',
dom=parseXml(xml),
json=xml2json(dom);
我得到一个错误,说“窗口未定义”。当然,我这里并没有初始化窗口,我只是不知道该怎么处理它,因为我在nodejs应用程序中

您可以从文章中看到xml2json,因为它太长,无法在这里发布


如果您有任何建议,将不胜感激。…

您的问题是,您正在访问
窗口
对象以获取DOMParser或Microsoft.XMLDom ActiveX对象。此代码旨在在浏览器中使用,所有问题都需要符合不同的浏览器类型等

因为您处于
nodejs
,所以可以大大简化此过程。首先,您需要能够将XML解析为类
XMLDom
对象的东西。有几个-我没有用过,但谷歌很快就找到了。还有其他人,所以看看周围,看看你觉得什么对你和你的项目是正确的

一旦将其安装到项目中,以下代码(未经测试)应该可以工作:

function parseXml(xml) {
  var DOMParser = require('xmldom').DOMParser;
  try {
    return new DOMParser().parseFromString(xml, "text/xml");
  }
  catch (e) { 
    return null; 
  }
}
这将提供一个DOMParsed等价物,然后可以通过
json2xml
读取