我必须从每个范围约 500MB 的大型 xml 文件中读取。批处理通常在每次运行中处理 500 个此类文件。我必须从中提取文本节点,同时从中提取 xml 节点。我在 java 中使用了 xpath DOM 以便于使用,但是由于内存问题,由于我的资源有限,这不起作用。
我现在打算在 java 中使用 SAX 或 stax - 可以轻松提取文本节点,但我不知道如何使用 sax 从 xml 中提取 xml 节点。
一个样品:
<?xml version="1.0"?>
<Library>
<Book name = "ABC">
<Author>John</Author>
<PrintingCompanyDT><Printer>Sam</Printer><Printmachine>Laser</Printmachine>
<AssocPrint>Oreilly</AssocPrint> </PrintingCompanyDT>
</Book>
<Book name = "123">
<Author>Mason</Author>
<PrintingCompanyDTv<Printervkelly</Printer><Printmachine>DOTPrint</Printmachine>
<AssocPrint>Oxford</AssocPrint> </PrintingCompanyDT>
</Book>
</Library>
预期结果:1)书籍:ABC:
作者:John
PrintCompany 详细 XML:
<PrintingCompanyDT>
<Printer>Sam</Printer>
<Printmachine>Laser</Printmachine>
<AssocPrint>Oreilly</AssocPrint>
</PrintingCompanyDT>
2) 书籍:123
作者:Mason
PrintCompany 详细 XML:
<PrintingCompanyDT>
<Printer>kelly</Printer>
<Printmachine>DOTPrint</Printmachine>
<AssocPrint>Oxford</AssocPrint>
</PrintingCompanyDT>
如果我尝试以常规方式在 public void characters(char ch[], int start, int length) 方法中附加字符,我会得到以下
1)Book: ABC:
Author:John
PrintCompany Detail XML:
Sam
Laser
Oreilly
正是内容和空间。
有人可以建议如何通过 Java 中的 SAX 或 StaX 解析器从 xml 文件中提取 xml 节点。