如何识别JAXB中元素之间的关系

时间:2010-12-21 18:40:31

标签: jaxb

是否有智能方法使用JAXB识别元素之间的关系。

例如:如果元素 SMTP 通知元素中引用/使用,元素配置

<element name="SMTP">
    <complexType>
      <sequence>
              <element name="fromEmailAddress" type="string"/>
              <element name="hostName" type="string"/>
              <element name="portNumber" type="string"/>
      </sequence>
  </complexType>
 </element> 

<element name="Notification">
       <complexType>
        <sequence>
           <element ref="tns:SMTP"/>
         </sequence>
       </complexType>
 </element>

<element name="Configuration">
       <complexType>
        <sequence>
           <element ref="tns:SMTP"/>
         </sequence>
       </complexType>
 </element>

有没有办法使用JAXB识别这种关系/依赖性(带通知和配置的SMTP)(我使用JAXB为我的XSD中的上述元素生成类)。如果是,示例java代码将会有所帮助< / p>

由于 拉维

1 个答案:

答案 0 :(得分:0)

将使用SMTP属性生成配置和通知类:

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;


@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "smtp"
})
@XmlRootElement(name = "Configuration")
public class Configuration {

    @XmlElement(name = "SMTP", namespace = "urn:example", required = true)
    protected SMTP smtp;

    public SMTP getSMTP() {
        return smtp;
    }

    public void setSMTP(SMTP value) {
        this.smtp = value;
    }

}

如果您希望使其成为双向关系,您可以利用EclipseLink JAXB中的@XmlInverseReference扩展(我是技术主管)。有关更多信息,请参阅: