目前我在一个类中有许多不同的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>
我写的新的Value,属性对类。
@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>