jaxb marxshalling - xml 中的重复元素
jaxb marxshalling - duplicate elements in the xml
我有两个处于等级关系中的 object。我在 child pojo 中有 setter 方法的 jaxb 映射。将 xml 加载到 pojo 时,我没有遇到任何问题。但是,在生成 xml 时,我在 xml 中看到 pojo object 中同一属性的两个元素条目 - 一个带有映射键,另一个带有实际变量名。
示例:
//parent class
public class Employee {
private String name;
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
}
//second class
@XmlRootElement(name = "teacher")
public class Teacher extends Employee {
@Override
public String getName(){
return super.getName();
}
@Override
@XmlElement(name ="NAME")
public void setName(String name){
super.setname(name)
}
}
//xml out put I get is
// like this
<teacher>
<name>John Doe<name/>
<NAME>John Doe</NAME>
</teacher>
我该如何解决这个问题?我只想要带钥匙的那个 - NAME
您可以执行以下任一操作:
- 将
Emoloyee
class 上的 name
属性 标记为 @XmlTransient
。
- 将
Employee
class 标记为 @XmlTransient
以将其删除为映射 class。
- 从
Teacher
class 中删除 name
属性 并用 @XmlElement
注释在 Employee
上注释。
我有两个处于等级关系中的 object。我在 child pojo 中有 setter 方法的 jaxb 映射。将 xml 加载到 pojo 时,我没有遇到任何问题。但是,在生成 xml 时,我在 xml 中看到 pojo object 中同一属性的两个元素条目 - 一个带有映射键,另一个带有实际变量名。
示例: //parent class
public class Employee {
private String name;
public String getName(){
return this.name;
}
public void setName(String name){
this.name=name;
}
}
//second class
@XmlRootElement(name = "teacher")
public class Teacher extends Employee {
@Override
public String getName(){
return super.getName();
}
@Override
@XmlElement(name ="NAME")
public void setName(String name){
super.setname(name)
}
}
//xml out put I get is
// like this
<teacher>
<name>John Doe<name/>
<NAME>John Doe</NAME>
</teacher>
我该如何解决这个问题?我只想要带钥匙的那个 - NAME
您可以执行以下任一操作:
- 将
Emoloyee
class 上的name
属性 标记为@XmlTransient
。 - 将
Employee
class 标记为@XmlTransient
以将其删除为映射 class。 - 从
Teacher
class 中删除name
属性 并用@XmlElement
注释在Employee
上注释。