Java XML映射@XmlValue或@XmlElements列表

问题描述

我之前曾多次问过类似的问题,但是我一直在寻找它。让我们考虑以下情形:@H_502_1@

我有一个看起来像这样的XML元素:@H_502_1@

...
<element>someTextValue</element>
...

OR @H_502_1@

...
<element>
 <listval>someTextValue1</listval>
 <listval>someTextValue2</listval>
 ...
 <listval>someTextValueN</listval>
</element>
...

表示element标签可以在内部包含文本值,也可以包含包含值的子元素列表。在整个文档中,可能有许多element这样的对象,并且可能有一些element带有值,有些带有子节点。@H_502_1@

我有一个如下所示的java类:@H_502_1@

@XmlType(name = "element")
public class Element {
 public String value;
 public List<String> valuesList;
}

现在,我要:@H_502_1@

a)将文本值映射到value字段(如果没有值,而是子节点,则为null)@H_502_1@

b)将子节点映射到valueList字段(如果没有子节点,则为null)@H_502_1@

我尝试使用@XmlMixed@XmlElementRef的所有配置,到目前为止,我得到的最明智的结果是:@H_502_1@

@XmlType(name = "element")
public class Element {
 @XmlMixed
 public List<String> value; //for some reason this only maps to a list,I want this to be a single String value

 @XmlElement(name = "listval")
 public List<String> valuesList;
}

现在,如果:@H_502_1@

a)元素具有文本值-该值正确映射到具有一个元素的列表,即值-当value字段的类型仅为String,{ {1}}正确为空@H_502_1@

我得到:@H_502_1@

valueList

我想要:@H_502_1@

{
 value: [ "someTextValue" ],valuesList: null
}

b)元素具有子节点-在这种情况下,{ value: "someTextValue",valuesList: null } 已正确映射。但是字段valuesList具有多个值,它们是空格和换行符(value)。我尝试使用"\n "来过滤空格,但似乎不适用于元素的文本值。@H_502_1@

我得到:@H_502_1@

@XmlJavaTypeAdapter

我想要:@H_502_1@

{
 value: [ 
  "\n            ","\n            ","\n            "
 ],valuesList: [ "someTextValue1","someTextValue2" ]
}

如果可能的话,我想使用现有的JAXB批注和/或适配器来执行此操作,而不是手动进行编组/解组。在此先感谢您提供有关此主题的任何建议,并且已经尝试了几个小时。@H_502_1@

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)