我有一个 xml,我需要从中提取值并在数据库中更新它。
xml 非常大,可能是 1gb 或更多。
这是解析和提取它的最有效方法。
Xpath 会很快吗?
XPath 在如此大的文档上可能会非常慢。使用流解析器 (SAX/StAX) 并随时随地提取所需信息可能会更好。
您需要对像这样的大文件使用某种流式处理方法,最简单的方法取决于 XML 的结构。如果它由许多可以独立处理的片段组成,例如
<rows>
<row>
<col name="col1">value1</col>
<col name="col2">value2</col>
</row>
<!-- and another million row elements -->
</rows>
然后有我称之为“半流式”的方式来流式传输文件解析一个row
,处理它,然后将其丢弃并解析下一个等。使用XOM(查找“自定义节点工厂”)或 JAXB(定义一个表示 one 的对象模型row
,然后在您的文档上创建一个 XMLStreamReader 并一次解组一行)。