读取nodejs中2个端点定义的文件的一部分

时间:2016-12-08 18:09:48

标签: javascript node.js filesystems html5-filesystem

我是nodeJs的新手,但我已经爱上了它。 我有以下data.xml文件。

<data>
 <student>
  <age>16</age>
  <name>Bill</name>
 </student>
 <teacher>
  <age>33</age>
  <name>Priyanka</name>
 </teacher>
</data>

我想从这个文件中读取学生的详细信息。 我探索了fs.readStream,fs.readFile,但是有些人怎么说不能正确。 Readline可能是一个解决方案(我不确定),但如果xml格式不正确怎么办?

提前致谢。

1 个答案:

答案 0 :(得分:1)

你无法解析无效的xml-所以修复它。然后,您可以使用xml2js(通过运行npm install xml2js安装)节点模块和此代码:

var fs= require('fs');
var parseString = require('xml2js').parseString;

fs.readFile('./data.xml', 'utf8', function read(err, data) {
    if (err) {
        throw err;
    }

    parseString(data, {trim: true}, function (err, result) {
        if (err){
            throw err;
        }
        console.dir(result);
    });
});

如果你不能修复xml,那么代码会抛出异常(教师年龄的结束标记无效)。 您应该检查xml文件的编码,为简洁起见我假设为utf8。