Как определить связь между элементами в JAXB - PullRequest
2 голосов
/ 21 декабря 2010

Существует ли интеллектуальный способ определения связи между элементами с использованием 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>

Есть ли способ идентифицировать это отношение / зависимость (SMTP с уведомлением и настройкой) с использованием JAXB (я использую JAXB для генерации классов для вышеуказанных элементов, присутствующих в моем XSD). Если это так, пример кода Java будет полезен

Спасибо, Рави

1 Ответ

0 голосов
/ 21 декабря 2010

Классы конфигурации и уведомлений будут создаваться со свойством 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;
    }

}

Если вы хотите сделать это двунаправленным отношением, вы можете использовать расширение @XmlInverseReference в EclipseLink JAXB (я технический руководитель). Для получения дополнительной информации см .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...