4

我正在尝试使用 JAXB 解析大小 >50 MB 的 AIXM5.1 xml 文件。我能够在一分钟内解组这个 xml。但是,当我尝试遍历 java 对象并获取 XML 中字段的值时,会花费大量时间。经过分析,我发现 xml 有 xlinks,它们在内部引用同一个 xml 中的 xml 片段,就像那​​里有大约40000 个 xlink 引用。因此,每次查找 xlink 中引用的特定 xml 片段时,我都试图遍历整个对象。这需要时间。

示例 xml 片段如下

<aixm:geometryComponent>
<aixm:AirspaceGeometryComponent gml:id="ID_2903_1384156119164_17492"><aixm:operation>BASE</aixm:operation>
<aixm:theAirspaceVolume>
<aixm:AirspaceVolume gml:id="ID_2903_1384156119164_17493">
<aixm:upperLimit uom="FL">30</aixm:upperLimit><aixm:upperLimitReference>STD</aixm:upperLimitReference>
<aixm:lowerLimit uom="FT">GND</aixm:lowerLimit><aixm:lowerLimitReference>MSL</aixm:lowerLimitReference>
<aixm:contributorAirspace>
<aixm:AirspaceVolumeDependency gml:id="ID_2903_1384156119164_17494"><aixm:dependency>HORZ_PROJECTION</aixm:dependency>
**<aixm:theAirspace xlink:href="urn:uuid:1c49634e-62ea-4319-bf80-23f3912cef8e">**</aixm:theAirspace>
</aixm:AirspaceVolumeDependency>
</aixm:contributorAirspace>
</aixm:AirspaceVolume>
</aixm:theAirspaceVolume>
</aixm:AirspaceGeometryComponent>
</aixm:geometryComponent>

如果您观察到元素具有xlink:href 属性,它通过此 uuid 具有 uuid 值,我必须找出具有匹配 uuid 的 Airspace xml 片段。像这样,xml 中存在 40000 多个引用。

当我通过 JAXB 搜索解决 xlinks 时,我发现 JXPath 是一个替代方案。但是我找不到与继承类的 JXPath 相关的示例。

如果有人研究它或建议我任何其他技术,请指导我。

期待您的帮助。。

4

0 回答 0