Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
展平JaxB对象_Jaxb_Xjc - Fatal编程技术网

展平JaxB对象

展平JaxB对象,jaxb,xjc,Jaxb,Xjc,我有这样一个非常复杂的xml结构 <root> <a> <b> <c>testc</c> <e>teste</e> <b> <d>testd</d> </a> ... </root> 而不是100个物体 理想情况下,我会对使用这个概念进行编组和解编组感兴趣 有,但我无法从您的XML判断这是否是问题所在 您

我有这样一个非常复杂的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;
 ...
}