将复杂xml转换为JAXB
如何围绕这个xml为JAX-RS设计一个jaxb元素将复杂xml转换为JAXB,jaxb,jax-rs,Jaxb,Jax Rs,如何围绕这个xml为JAX-RS设计一个jaxb元素 <activity> <code>Purchase</code> <description> Purchase and sell </description> <deals> <deal key="name"> buy</deal> <deal key="isactive"> Tr
<activity>
<code>Purchase</code>
<description> Purchase and sell </description>
<deals>
<deal key="name"> buy</deal>
<deal key="isactive"> True </deal>
<deal key="isgood"> False </deal>
<deal key="costcode"> FINCOM </deal>
<deal key="opportunity"> Finance</deal>
<deals>
</activity>
从XML文件中,您可以定义XML模式(参见下面的示例),并让我们从中生成Java绑定
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="activity">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="code" type="xsd:string" />
<xsd:element name="description" type="xsd:string" />
<xsd:element name="deals">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="deal">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="key" type="xsd:string" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
关键是要有某种类型的容器,如列表,将详细信息附加到活动对象中。。
@XmlRootElement(name = "activity")
@XmlAccessorType(XmlAccessType.FIELD)
public class Activity {
@XmlElement
private String code;
@XmlElement
private String description ;
@XmlElementWrapper
@XmlElement(name="detail")
public List<Detail> details = new ArrayList<Detail>();
public Activity() {}
@XmlRootElement(name = "detail")
@XmlAccessorType(XmlAccessType.FIELD)
public class Detail {
@XmlAttribute
private String key;
@XmlValue
private String value;