通过示例更容易解释,
示例XML:
<root>
<company>
<name>xyz</name>
<employees>
<employeeref>emp1</employeeref>
<employeeref>emp2</employeeref>
</employees>
</company>
<employee id="emp1">
<name>a</name>
<age>12</age> </employee>
<employee id="emp2">
<name>b</name>
<age>24</age> </employee>
<employee id="emp3">
<name>c</name>
<age>36</age>
</employee>
</root>
这需要Company.java和Employee.java。
我的问题是, 如何使用Jaxb注释将xml绑定到java对象?
答案 0 :(得分:2)
您可以将@XmlID
与@XmlIDREF
<强>员工强>
在Employee
类上,您需要注释哪个字段/属性将成为该对象的“键”。在JAXB中,这是通过@XmlID
注释完成的。
@XmlAccessorType(XmlAccessType.FIELD)
public class Employee {
@XmlAttribute
@XmlID
private String id;
}
<强>公司强>
在Company
类中,我们将指出我们要封送Employee
的实例作为对真实对象的引用。这是使用@XmlIDREF
注释完成的。
@XmlAccesorType(XmlAccessType.FIELD)
public class Company {
@XmlElementWrapper
@XmlElement(name="elementref")
@XmlIDREF
private List<Employee> employees;
}
<强>根强>
为了@XmlIDREF
工作,对象必须使用@XmlElement
注释映射到其他位置。在这个例子中,这发生在Root
类。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {
private Company company;
@XmlElement(name="employee")
private List<Employee> employees;
}
了解更多信息
您可以在我的博客上阅读有关@XmlID
和@XmlIDREF
的更多信息:
答案 1 :(得分:-1)
我认为您需要以下课程,这里是示例,您可以通过其他方式来实现
Root One class for Root
| -- Company Company class
| |
| | employess(List) one more class for employess collection
|
|
employee (collection) one class for employee
EmployeeData
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "root")
public class EmployeeData {
@XmlElement
private Company company;
private List<Employee> employee;
// getter/setter
}
公司
@XmlAccessorType(XmlAccessType.FIELD)
public class Company {
@XmlElement(required = true)
private String name;
@XmlElement(required = true)
private Employees employees;
//...// getter/setter
}
员工
@XmlAccessorType(XmlAccessType.FIELD)
public class Employee {
@XmlElement
private String name;
private int age;
@XmlAttribute(name = "id")
private String id;
///// getter/setter
}
员工
@XmlAccessorType(XmlAccessType.FIELD)
public class Employees {
private List<String> employeeref;
// getter / setter }
答案 2 :(得分:-2)
Java类的结构可以形成树形层次结构,如XML文件中所述。 Java类中使用注释来描述此结构。 以下是使用的一些注释的列表:
员工类可以是这样的:
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Employee {
private String id;
private String name;
private String age;
public String getId() {
return id;
}
@XmlAttribute
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
@XmlElement
public void setAge(String age) {
this.age = age;
}
}