问题描述
我之前曾多次问过类似的问题,但是我一直在寻找它。让我们考虑以下情形:@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@
@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 (将#修改为@)