Java 如何使用@XmlElement和@XmlRootElement在对象内部编组对象?
我见过许多JAXB实现,在这些实现中,我们可以使用Java 如何使用@XmlElement和@XmlRootElement在对象内部编组对象?,java,xml,jaxb,Java,Xml,Jaxb,我见过许多JAXB实现,在这些实现中,我们可以使用@xmlement注释将java原语转换为XML元素 但是,我想将以下POJO转换为XML(注意,employee类中有一个地址对象,而不仅仅是原语): 如何使用这些JAXB注释将employee对象整理成XML 谢谢。使用Jaxb,您可以尝试以下代码。或者你也可以试试 ======================== @XmlRootElement public class TestObject1 { String b; p
@xmlement
注释将java原语转换为XML元素
但是,我想将以下POJO转换为XML(注意,employee类中有一个地址对象,而不仅仅是原语):
如何使用这些JAXB注释将employee对象整理成XML
谢谢。使用Jaxb,您可以尝试以下代码。或者你也可以试试 ========================
@XmlRootElement
public class TestObject1 {
String b;
public String getB() {
return b;
}
@XmlElement
public void setB(String b) {
this.b = b;
}
}
通过遵循下面给出的方法(即通过@XmlRootElement
注释来注释这两个类),我能够使用JAXB实现“对象内部对象”XML编组:
封送POJO属性与封送基元属性没有什么不同。引用的POJO类不需要用
@XmlRootElement
注释
Java模型
员工
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Employee {
private Address address;
private int employeeId;
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public int getEmployeeId() {
return employeeId;
}
public void setEmployeeId(int employeeId) {
this.employeeId = employeeId;
}
}
import javax.xml.bind.annotation.*;
@XmlRootElement
public class Employee {
private Address address;
private int employeeId;
@XmlElement(name="ADDR")
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@XmlElement(name="ID")
public int getEmployeeId() {
return employeeId;
}
public void setEmployeeId(int employeeId) {
this.employeeId = employeeId;
}
}
地址
要将地址
编组为员工
的一部分,您不需要做什么特殊的事情
public class Address {
private String street;
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
}
演示代码
下面是一些演示代码,它将填充员工模型并将其封送到XML
演示
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Employee.class);
Address address = new Address();
address.setStreet("1 A Street");
Employee employee = new Employee();
employee.setEmployeeId(123);
employee.setAddress(address);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(employee, System.out);
}
}
输出
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee>
<address>
<street>1 A Street</street>
</address>
<employeeId>123</employeeId>
</employee>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee>
<ADDR>
<street>1 A Street</street>
</ADDR>
<ID>123</ID>
</employee>
输出
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee>
<address>
<street>1 A Street</street>
</address>
<employeeId>123</employeeId>
</employee>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee>
<ADDR>
<street>1 A Street</street>
</ADDR>
<ID>123</ID>
</employee>
一条街
123
但我没有“字符串”,而是要编组“地址”对象!如何进行注释?将@XmlElement注释放在getXXX方法上?不放在字段上?@B尽管这是一个非常有用的答案,非常感谢!!
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<employee>
<ADDR>
<street>1 A Street</street>
</ADDR>
<ID>123</ID>
</employee>