通过windows上的node.js加载xml文件

时间:2012-05-14 08:45:25

标签: xml windows node.js

我正在尝试通过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”

3 个答案:

答案 0 :(得分:0)

请确保xml文档在此处有效:

http://www.w3schools.com/xml/xml_validator.asp

如果是,但它失败了我建议在他们的github页面上打开一个问题

您可以在npm

上搜索其他模块

我亲自使用xml2js没有问题

答案 1 :(得分:0)

msinfo32输出“ucs2”,错误的编码导致了问题。 Xmldom解析器工作正常,即使解析整个文件需要几分钟。

我使用xml-splitter来提取要解析的xml分支

答案 2 :(得分:-1)

我看到你写的是长度而不是长度...也许这就是问题!