将大型 XML 文件 (1.8GB) 解析为 JSON

编程入门 行业动态 更新时间:2024-10-07 12:20:30

将大型 XML <a href=https://www.elefans.com/category/jswz/34/1771438.html style=文件 (1.8GB) 解析为 JSON"/>

将大型 XML 文件 (1.8GB) 解析为 JSON

我试图在我的节点项目中将 XML 文件解析为 JSON 文件。为了解析较小的文件,我一直使用“fast-xml-parser”。

我现在处理的文件要大得多,实际上大到超出了可用内存。由于这个问题,我必须使用支持管道的解析器。我在网上查看并找到了一个名为“sax”的,但据我所知,它不会解析为 JSON。

我尝试将“fast-xml-parser”放入“sax”提供的侦听器中,如下所示:

import fs from 'fs';
import sax from 'sax';
import { XMLParser, X2jOptionsOptional } from 'fast-xml-parser';

const parserOptions: X2jOptionsOptional = {
    ignoreDeclaration: true,
    ignoreAttributes: false,
    removeNSPrefix: true,
    attributeNamePrefix : "",
    transformTagName: (tagname) => camelize(tagname),
    transformAttributeName: (attributeName) => camelize(attributeName),
    updateTag: (tagName, jPath, attrs) => {
        if (tagName == 'placemark') return 'placemarks';
        if (tagName == 'timeStep') return 'timesteps';
    }
}

const parser = new XMLParser(parserOptions)

const saxStream = sax.createStream(false, {
    trim: false,
    lowercase: true,
    xmlns: true,
    position: false
})

saxStream.on('data', (data) => {
    const parsed = parser.parse(data)
    fs.writeFileSync('src/forecast/forecast.json', JSON.stringify(parsed))
})

当使用上面的监听器时,第一块数据被解析并放入json文件,之后,抛出一个错误:

Cannot read properties of undefined (reading 'addChild')

有人知道如何将数据块解析为一个 JSON 文件吗?

回答如下:

Node.js 不幸的是没有很好地提供 XML 工具。您可以使用 sax.js 解析器,但它涉及一些低级编程,它肯定不会处理到 JSON 的转换,您需要自己编程。

这个工作真的需要在node.js下运行吗?如果您能够在 Java 或 C# 下运行,您可以编写流式 XSLT 3.0 转换并使用 Saxon-EE [免责声明:我公司的产品] 运行它。在 node.js 下运行的 SaxonJS 产品不提供流式传输。

您可以考虑的另一种可能性是使用 sax.js 将大文件拆分为许多小的 XML 文件,然后使用非流式实用程序(例如 fast-xml-parser)处理这些文件。

更多推荐

将大型 XML 文件 (1.8GB) 解析为 JSON

本文发布于:2024-05-30 06:38:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770212.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件   XML   JSON   GB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!