Неквалифицированный элемент с указанием квалифицированного типа - PullRequest
1 голос
/ 15 сентября 2011

Я пытаюсь создать следующий фрагмент XML из аннотаций JAXB.

<pCredentials xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:type="ns3:LoginCredentials">
        <loginId>user</loginId>
        <loginPassword>password</loginPassword>
        <userType>super</userType>
     </pCredentials>

Я попробовал следующие аннотации и несколько вариантов одного типа:

@XmlElement(name = "pCredentials", namespace = "##default", type = com.foo.LoginCredentials.class)
private LoginCredentials pCredentials;

Но выдает следующее:

   <pCredentials>
        <loginId>user</loginId>
        <loginPassword>password</loginPassword>
        <userType>super</userType>
     </pCredentials>

Какие-либо предложения относительно того, какой тип аннотаций я могу предоставить, будет создавать ссылку на тип?

Спасибо за помощь ... Джей

1 Ответ

1 голос
/ 15 сентября 2011

Ваша реализация JAXB добавит атрибут xsi:type, только если тип значения Java не соответствует ожидаемому типу элемента.Вот почему то, что вы пробовали, не будет работать (поскольку вы говорите, что тип элементов совпадает с типом значения.

Вы можете сделать следующее:

@XmlElement(type = Object.class)
private LoginCredentials pCredentials;

Примечание.

  • Атрибут xsi:type потребуется в демаршалированном XML-файле.
  • Вам необходимо будет включить LoginCredentials в список классов, предоставленных для начальной загрузки JAXBContext.

Для получения дополнительной информации

...