使用大量Erlang进程运行Java XML解析器

使用大量Erlang进程运行Java XML解析器,java,xml,concurrency,xml-parsing,erlang,Java,Xml,Concurrency,Xml Parsing,Erlang,我有一个并行和分布式编程课程的项目 在本课程中,我们使用Erlang 我需要使用XML文件中的一些数据库,该文件已经有一个用java编写的解析器(这是XML和解析器的链接:)。 XML文件是2.5GB,因此我知道第一步是使用我将在erlang中创建的许多进程来解析XML,每个进程将解析一块XML 问题是,这是我第一次做这样的事情(结合erlang和java,并解析一个非常大的XML文件),所以我不知道如何解决这个问题——在我开始解析之前,先将XML分解成块?以某种方式为每个解析XML的进程设置开

我有一个并行和分布式编程课程的项目

在本课程中,我们使用Erlang

我需要使用XML文件中的一些数据库,该文件已经有一个用java编写的解析器(这是XML和解析器的链接:)。 XML文件是2.5GB,因此我知道第一步是使用我将在erlang中创建的许多进程来解析XML,每个进程将解析一块XML

问题是,这是我第一次做这样的事情(结合erlang和java,并解析一个非常大的XML文件),所以我不知道如何解决这个问题——在我开始解析之前,先将XML分解成块?以某种方式为每个解析XML的进程设置开始和结束

只是澄清一下——本课程是关于erlang和在erlang中使用进程的,所以我必须使用它(因为我确信有java多线程解决方案)

我将非常感谢任何想法或帮助!
谢谢

您可以在Erlang中完成,而无需使用Java。在处理之前,不需要完全读取文件。您应该使用支持XML流API的XML解析器。我建议使用太快的(它使用C函数来解析XML)。
初始化流解析器状态后,在循环(递归函数)中,您应该逐块读取文件(例如,每个块1024字节),并将每个块交给解析器。若解析器发现新的XML元素,它将以erlang消息的形式将它们发送到回调进程。在回调过程中,您可以生成更多的进程来处理每个XML元素。

您好,非常感谢您的回答,我一定会选中此选项!我之所以想使用这个网站上的Java解析器,是因为它们还有很多函数可以从这个XML文件中提取信息(在解析之后),所以我想也许最好使用它,然后我就可以使用所有这些函数,而不是自己做每件事。我将阅读fast_xml,但是如果您对Java解析器和函数的这种连接有任何想法,那就太好了。谢谢你看到了吗?是的,我看到了,我已经写了一个示例代码,并设法在Erlang和Java之间连接,这个链接主要是关于它的。我要问的问题更具体一点(因为它与我需要解析的XML文件有关),更多的是关于如何解决这个问题。正如我所说,我有一门关于java编程的课程,还有一门关于erlang编程的课程,但这是我第一次将它们结合起来,也是我第一次需要使用XML文件。所以我对这类问题没有经验。