Javascript 节点xml2js正在返回';未定义';使用parseString()时
我在其他地方使用了这个包,它工作得很好,但是在一个XML文件的特定示例中,我遇到了“未定义”错误 例如:Javascript 节点xml2js正在返回';未定义';使用parseString()时,javascript,xml,node.js,Javascript,Xml,Node.js,我在其他地方使用了这个包,它工作得很好,但是在一个XML文件的特定示例中,我遇到了“未定义”错误 例如: fs.readFile('./XML/theXMLfile13mb.xml', 'ascii', function(err,data){ if(err) { console.log("Could not open file " + err); process.exit(1); } parseString(data, function
fs.readFile('./XML/theXMLfile13mb.xml', 'ascii', function(err,data){
if(err) {
console.log("Could not open file " + err);
process.exit(1);
}
parseString(data, function (err, result) {
console.log(result); // Returns undefined
var json1 = JSON.stringify(result); // Gives an error
var json = JSON.parse(json1);
不要真的提到这是怎么可能的/这可能意味着什么。我尝试过使用其他XML文件,它们工作得很好。这个特定的XML文件不比其他文件大,也不显得不太灵活(它在我的浏览器中打开得很好,所有数据都按预期显示)
关于如何解决此问题的任何想法?您需要将
数据
从缓冲区转换为字符串,请使用以下方法:
parseString(data.toString(), function (err, result) {
而不是:
parseString(data, function (err, result) {
确保XML具有100%的有效语法。还要验证文件编码。除了在浏览器中打开它并看到它正确加载而没有错误之外,我该如何做?通过XML验证器运行它(尽管我认为大多数浏览器应该指示非常无效的XML)。您可以在
parseString
函数的回调中看到err
参数。它在console.log
上说了什么?猜测您的文件是否正在加载到数据中?删除ascii
编码,默认utf8
就足够了。