我有以下嵌套 XML,我想将Node.js流解析到Postgres数据库。 XML被简化为可重现的示例,但实际上很大。
<MarketDocument>
<createdDateTime>2018-02-17T16:42:28Z</createdDateTime>
<TimeSeries>
<Type>A01<Type>
<Period>
<Point><position>1</position></Point>
<Point><position>2</position></Point>
</Period>
</TimeSeries>
<TimeSeries>
<Type>B01<Type>
<Period>
<Point><position>3</position></Point>
<Point><position>4</position></Point>
</Period>
</TimeSeries>
</MarketDocument>
预期输出:[["A01", 1], ["A01", 2], ["B01", 3], ["B01", 4]]
主要问题:迭代父(<Type>
)。没有找到关于这个问题的好文档。想通过forrert
问题:
1)你有想法用Node.js正确解析这个吗?
2)也许有另一种方法:让我知道。
我基本上需要以下部分的帮助:
var XmlStream = require('xml-stream');
var stream = fs.createReadStream('./here.xml'); // or stream directly from your online source
var xml = new XmlStream(stream);
xml.on('endElement: TimeSeries', function(item) {
// PHP-code: How do you do this in nodejs
foreach ($item->Period->Point as $point) {
$position = $point->position;
$array[] = "('$Type', '$position')";
}
});
您的帮助将不胜感激!
答案 0 :(得分:1)
forrert的回答中提到的所有方法对我来说都很好.. 如果xml非常庞大,你可以将它拆分为几个块,并一次处理一个块,以便不阻止整个过程