【发布时间】:2016-04-29 12:48:18
【问题描述】:
目前我在一个类中有许多不同的 xml 元素包装器。
我想为 xml 元素的 xml 标签添加一个属性。 这将作为我的应用程序的标志。
每个 xml 元素都有不同的属性值,所以我想把它们打包在一起。
出于这个原因,我编写了一个具有两个字段的新对象。一个通用值字段和一个字符串字段,将其用作属性。
不幸的是,如果没有“垃圾”xml 标记的存在,我找不到从值字段中提取值的方法。
有没有办法做到这一点。 为了更清楚,我展示了代码的具体部分。
@XmlRootElement(name = "client")
class Client {
private List<String> names;
private List<Integer> salaries;
private List<Long> socialSecurityNos;
@XmlElementWrapper(name = "names")
@XmlElement(name = "name")
public List<String> getNames() {
return this.names;
}
@XmlElementWrapper(name = "salaries")
@XmlElement(name = "salary")
public List<String> getSalaries() {
return this.salaries;
}
@XmlElementWrapper(name = "socialsecuritynos")
@XmlElement(name = "socialsecurityno")
public List<String> getSocialSecurityNo() {
return this.socialSecurityNos;
}
...
...
}
这会产生以下 xml
<foo>
<names>
<name>
George
</name>
<name>
John
</name>
</names>
<salaries>
<salaries>
...
...
</salaries>
</salaries>
<socialSecurityNo>
<socialSecurityNo>
...
...
</socialSecurityNo>
</socialSecurityNo>
</foo>
我写的新的值,属性对类。
@XmlRootElement(name = "client")
class GenericElement <T> {
private String attribute;
private T value;
public T getValue() {
return this.value;
}
@XmlAttribute(name = "flag")
public String getAttribute() {
return this.attribute;
}
}
当然我改变了列表类型
@XmlRootElement(name = "client")
class Client {
private List<GenericElement<String>> names;
private List<GenericElement<Integer>> salaries;
private List<GenericElement<Long>> socialSecurityNos;
...
...
我想得到这个结果。
<foo>
<names>
<name flag="on">
George
</name>
...
<name flag="off">
John
</name>
</names>
....
.....
</socialSecurityNo>
</socialSecurityNo>
</foo>
相反,我用“垃圾”值标签来理解它。
<foo>
<names>
<name flag="on">
<value>George</value>
</name>
...
<name flag="off">
<value>Value</value>
</name>
</names>
....
....
....................</value>
</socialSecurityNo>
</socialSecurityNo>
</foo>
【问题讨论】: