我已经通过这篇文章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,因为它太长了,无法发布在这里...
任何建议,都会感激....
答案 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
读取。