我们正在使用一个包含许多引用的大型 XML 文档。使用 JAXB,我们成功地解组了文档。使用一种方法,我们传递节点以使用简单的三元运算符解析引用:
someElement = someElement.getRef() != null ? (someClass)someElement.getRef() : someElement;
我们还需要根据某些子元素生成PDF。使用 JAXB.marshal 我们将一个子节点输出到一个字符串,但是引用没有被解析并且我们丢失了内容。此外,上面的语句虽然简单,但却被执行了很多次,我们希望完全避免它。
有没有办法配置 JAXB 以在编组时解析此引用?或者有任何替代方法来预处理文档?
输入:
<Root>
<Category>
<SomeElement ref="someId" />
</Category>
<SomeElement id="someId">
<ValuableContent>HelloWorld</ValuableContent>
</SomeElement>
<Root>
期望:
<Root>
<Category>
<SomeElement>
<ValuableContent>HelloWorld</ValuableContent>
</SomeElement>
</Category>
<Root>
我们最终使用 XpathFactory 查找所有具有 ref 属性的元素,并将这些元素替换为具有匹配 id 属性的等效元素。解决方案有 2 个问题。