我正在尝试通过IIS中托管的Node.js加载和解析本地XML文件。 我使用fs readFile来读取字符串,使用xmldom模块来解析它。 它可以工作,直到文件大小很小(几kb),但如果我尝试加载3Mb xml它就会失败。
Windows的其他xml模块可以表现得更好吗?
这是我的代码
var fs = require('fs');
fs.readFile('C:\\Temp\\TEST.xml', 'ascii', function(err,data){
if(err) {
console.log("Could not open file"+ err);
process.exit(1);
}
var Dom = require('xmldom').DOMParser;
var doc = new Dom().parseFromString(data.substring(2,data.lenght));
console.log(doc.childNodes[0].localName);
});
5分钟之后,解析器仍在运行xml,而在一个更简单的例子中它可以工作。我以xml格式保存msinfo32的输出
10分钟后输出为RangeError:超出最大调用堆栈大小
输出来自“msinfo32 / nfo C:\ TEMP \ TEST.NFO”
答案 0 :(得分:0)
请确保xml文档在此处有效:
http://www.w3schools.com/xml/xml_validator.asp
如果是,但它失败了我建议在他们的github页面上打开一个问题
您可以在npm
上搜索其他模块我亲自使用xml2js没有问题
答案 1 :(得分:0)
msinfo32输出“ucs2”,错误的编码导致了问题。 Xmldom解析器工作正常,即使解析整个文件需要几分钟。
我使用xml-splitter来提取要解析的xml分支
答案 2 :(得分:-1)
我看到你写的是长度而不是长度...也许这就是问题!