展平JaxB对象
我有这样一个非常复杂的xml结构展平JaxB对象,jaxb,xjc,Jaxb,Xjc,我有这样一个非常复杂的xml结构 <root> <a> <b> <c>testc</c> <e>teste</e> <b> <d>testd</d> </a> ... </root> 而不是100个物体 理想情况下,我会对使用这个概念进行编组和解编组感兴趣 有,但我无法从您的XML判断这是否是问题所在 您
<root>
<a>
<b>
<c>testc</c>
<e>teste</e>
<b>
<d>testd</d>
</a>
...
</root>
而不是100个物体
理想情况下,我会对使用这个概念进行编组和解编组感兴趣 有,但我无法从您的XML判断这是否是问题所在
您可以使用平坦的Root
方法,但是忽略容器标记将失去复制原始结构的能力。
您可以进行很多配置,甚至可以编写自己的片段(反)序列化程序,但在某一点上,当尝试将XML树放入单个节点的JAXB POJO时,它会变得太复杂
据我所知,您只对能够编辑带有文本内容的单字母标记的值感兴趣。也许您可以通过使用XSLT将源文档转换为一个1对1映射到POJO的文档来简化接口,但是您还必须编写相反的XSLT
另一种方法是简单地将XML加载到通用DOM中,并使用XPath(如//a/text()
)访问可编辑节点。您可能已经对属性使用了getter和setter,因此您可以让它们调用私有getText(字符串标记名)
和私有setText(字符串标记名,字符串值)
来直接读取和修改DOM。这些函数只需使用and即可。有,但我无法从XML中判断这是否是问题所在
您可以使用平坦的Root
方法,但是忽略容器标记将失去复制原始结构的能力。
您可以进行很多配置,甚至可以编写自己的片段(反)序列化程序,但在某一点上,当尝试将XML树放入单个节点的JAXB POJO时,它会变得太复杂
据我所知,您只对能够编辑带有文本内容的单字母标记的值感兴趣。也许您可以通过使用XSLT将源文档转换为一个1对1映射到POJO的文档来简化接口,但是您还必须编写相反的XSLT
另一种方法是简单地将XML加载到通用DOM中,并使用XPath(如
//a/text()
)访问可编辑节点。您可能已经对属性使用了getter和setter,因此您可以让它们调用私有getText(字符串标记名)
和私有setText(字符串标记名,字符串值)
来直接读取和修改DOM。这些函数只需使用and。您可以添加XSD吗?您可以添加XSD吗?谢谢您的输入。我没有循环问题。我只需要对许多领域进行分析,我正在尽可能多地实现自动化。使用DOM不是一个解决方案,因为我正在处理大型文档。而且XSLT会让我手工编写映射,我正试图避免这种情况。如果DOM太大,JAXB也会太大——整个树都会在内存中,只是使用不同的模型。如果记忆是一个问题,请看一看。否则,您将不得不编写一些代码来处理模型的复杂性——它是一个树结构,而不是一个平面列表。显示XSD;如果生成的代码中有冗余,而XSD中没有冗余,您可以通过添加一些注释来减少冗余。谢谢您的输入。我没有循环问题。我只需要对许多领域进行分析,我正在尽可能多地实现自动化。使用DOM不是一个解决方案,因为我正在处理大型文档。而且XSLT会让我手工编写映射,我正试图避免这种情况。如果DOM太大,JAXB也会太大——整个树都会在内存中,只是使用不同的模型。如果记忆是一个问题,请看一看。否则,您将不得不编写一些代码来处理模型的复杂性——它是一个树结构,而不是一个平面列表。显示XSD;如果生成的代码中存在冗余,而XSD中没有冗余,则可以通过添加一些注释来减少冗余。
class Root {
private String c;
private String e;
private String d;
...
}