我有一个结构如下的 XML 文件:
<element1>
<element2>
<element3>
<elementIAmInterestedIn attribute="data">
<element4>
<element5>
<element6>
<otherElementIAmInterestedIn>
<data1>text1</data1>
<data2>text2</data2>
<data3>text3</data3>
</otherElementIAmInterestedIn>
</element6>
</element5>
</element4>
</elementIAmInterestedIn>
<elementIAmInterestedIn attribute="data">
<element4>
<element5>
<element6>
<otherElementIAmInterestedIn>
<data1>text1</data1>
<data2>text2</data2>
<data3>text3</data3>
</otherElementIAmInterestedIn>
</element6>
</element5>
</element4>
</elementIAmInterestedIn>
<elementIAmInterestedIn attribute="data">
<element4>
<element5>
<element6>
<otherElementIAmInterestedIn>
<data1>text1</data1>
<data2>text2</data2>
<data3>text3</data3>
</otherElementIAmInterestedIn>
</element6>
</element5>
</element4>
</elementIAmInterestedIn>
</element3>
</element2>
</element1>
如您所见,我对两个元素感兴趣,第一个元素深深嵌套在根元素中,第二个元素深深嵌套在第一个元素中。文档中有多个(兄弟)elementIAmInterestedIn 和其他ElementIAmInterestedIn 元素。
我想用 Java 解析这个 XML 文件,并将来自所有 elementIAmInterestedIn 和 otherElementIAmInterestedIn 元素的数据放入数据结构或 Java 对象中——只要它被组织好并且我以后可以访问它,这对我来说并不重要。
我能够编写一个递归 DOM 解析器方法,该方法对 XML 进行深度优先遍历,以便它触及每个元素。我还编写了一个带有表示 elementIAmInterestedIn 的 JAXB 注释的 Java 类。然后,在递归方法中,我可以检查何时到达 elementIAmInterestedIn 并将其解组为 JAXB 类的实例。除了这样的对象还应该包含多个 otherElementIAmInterestedIn 之外,这很好用。
这就是我卡住的地方。如何从 otherElementIAmInterestedIn 中获取数据并将其分配给 JAXB 对象?我见过@XmlWrapper 注释,但这似乎只适用于一层嵌套。另外,我不能使用@XmlPath。
也许我应该放弃这个想法并使用一种全新的方法。我真的才刚刚开始使用 XML 解析,所以也许我忽略了一个更明显的解决方案。您将如何解析这样结构的 XML 文档并以有组织的方式存储数据?