使用nodeJS解析大型嵌套XML

时间:2018-04-19 18:31:02

标签: node.js

我有以下嵌套 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

the approach一起工作

问题:
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')";
    }

});

您的帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

forrert的回答中提到的所有方法对我来说都很好.. 如果xml非常庞大,你可以将它拆分为几个块,并一次处理一个块,以便不阻止整个过程