我试图解析通过一个kml文件懒洋洋地与xml流模块和运行到缺乏相关的例子。这是我的代码到目前为止。lazy.js和xml流解析
var fs = require('fs');
var path = require('path');
var xmlStream = require('xml-stream');
var lazy = require('lazy.js')
var stream = fs.createReadStream('./Sindh.kml');
var xml = new xmlStream(stream);
var onlyEvents = function(e) {
if (e && e._events) {
return 1;
}
else {
return 0;
}
}
lazy(xml).filter(onlyEvents).take(20).each(function(e) {
console.log(e);
console.log('\n');
});
//xml.preserve('Polygon', true);
//xml.on('endElement: Polygon', function(poly) {
// var coordString = poly.outerBoundaryIs.LinearRing.coordinates.$children.join().trim();
//console.log('\n\n');
//})
所以,这个想法是对的endElement事件过滤从事件发射器输出复制出带有注释的文本的行为。我通过运行代码获得输出,我只是不知道我在看什么或从哪里去。
我是新来的流和lazy.js所以道歉,如果这是一个总noob问题。也许我只是不理解我从循环中得到的物体。
这是一个棘手,因为'XML-stream'库似乎暴露出一些*流,如*,它提供了一个稍微不同的接口到Node中的日常'stream.Readable'。懒惰目前还没有提供一种将任意源作为序列封装的方法。但是,这是我将在不久的将来添加的内容。如果可以的话,我会重新审视这个问题。 –
感谢您的回复。所以我想现在我的选择是编写一个自定义序列来解析xml,就像你在json例子中所做的那样,或者编写一个更加严格遵守流的xml流模块。可读接口。 如果我走后者的路线,我应该期待从懒惰的每个输出像一个on.data事件,是否正确? – ddombrow