-1
現在,我的代碼從包含多個文檔的XML文件創建一個流,並將其合併到一個XML文檔中。然後它將該字符串傳遞給XML解析器,該解析器允許我從XML流中檢索數據。我想通過分離創建xml流的邏輯和xml解析器的邏輯來模塊化我的應用程序。下面是我的代碼:將解析邏輯拆分爲單獨的文件Node.js
var fs = require('fs');
var path = require('path');
var split = require("split");
var util = require("util");
var Transform = require("stream").Transform;
var XmlStream = require('xml-stream');
var parseXml;
// Create a file stream and pass it to XmlStream
var streamXmlFile = fs.createReadStream(path.join(__dirname, 'ipg140107.xml'));
util.inherits(CombineXmlDocs, Transform);
function CombineXmlDocs() {
Transform.call(this, { "objectMode": true });
this.currLine = 0;
}
CombineXmlDocs.prototype._transform = function (line, encoding, processed) {
this.currLine++;
if (this.currLine === 3) {
this.push('<week-of-patents>\n');
}
if (this.currLine < 3 || (line.indexOf('<?xml') === -1 && line.indexOf('<!DOCTYPE') === -1)) { // handle first line
this.push(line + '\n');
}
processed(); // we're done processing the current line
};
CombineXmlDocs.prototype._flush = function(cb) {
cb();
};
// streamXmlFile.pipe(split()).pipe(new CombineXmlDocs()).pipe(process.stdout);
parseXml = new XmlStream(streamXmlFile.pipe(split()).pipe(new CombineXmlDocs()));
// parseXml = new XmlStream(streamXmlFile);
parseXml.on('endElement: date', function(date) {
console.log(date.$text);
});