【发布时间】:2014-07-11 18:43:12
【问题描述】:
我正在尝试创建一个将 xml 转换为 json 的简单方法。我正在尝试使用 javascript 的原型来做到这一点,因为我正在尝试学习如何使用原型,并且因为我希望能够做类似myXmlString.toJson();
我有下面的脚本,它演示了 xml 字符串在方法内部很好地转换为 json 对象,但是当我尝试调用该方法时它是未定义的。
var parseString = require('xml2js').parseString; // Used to parse the returned xml (ick) to json (yum)
String.prototype.toJson = function() {
parseString(this, {explicitArray: false}, function (err, jsonResult) {
if(err) {
console.log('err');
console.log(err);
return err;
}
console.log('inside toJSON');
console.log(jsonResult); // <-- Prints a json object as expected
return jsonResult;
});
}
var mystring = '<parent><child>3</child></parent>';
console.log(mystring); // Prints an xml string
mystring.toJson(); // Should this convert the variable mystring to a json structure?
console.log(mystring); // Prints the xml string
console.log(mystring.toJson()); // Prints undefined. Why?
【问题讨论】:
-
您最终将花费数周的时间编写一个合适的 XML 解析器,而您应该只使用内置的解析器。现代浏览器有一个DOMParser,使用它来获取一个DOM,然后将所有元素及其属性解析为一个对象,并使用JSON.stringify。
-
@adeneo,平心而论,看起来他并没有在浏览器中运行它。不过,我同意你的观点,应该使用适当的解析器。
-
我在后端 REST 服务器中将它作为 node.js 脚本运行。
标签: javascript xml json node.js