cxf / jaxb комплексные типы - PullRequest
       29

cxf / jaxb комплексные типы

0 голосов
/ 27 октября 2010

Я использую CXF для генерации классов из WSDL, но я не знаю, как получить доступ к следующему полю:

<s:complexType name="text-with-layout-type" mixed="true">
<s:sequence>
<s:any minOccurs="0" maxOccurs="unbounded"/>
</s:sequence>
<s:attribute name="L" type="s:string"/>
</s:complexType>

Полученный класс:

<code>@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "text-with-layout-type", propOrder = {
    "content"
})
public class TextWithLayoutType {

    @XmlMixed
    @XmlAnyElement(lax = true)
    protected List<Object> content;
    @XmlAttribute(name = "L")
    protected String l;

    /**
     * Gets the value of the content property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the content property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getContent().add(newItem);
     * 
* * *

* Объекты следующих типов разрешены в списке * {@link Object} * {@link String} * * * / public List getContent () {if (content == null) {content =новый ArrayList ();} вернуть this.content;} / ** * Получает значение свойства l.* * @return * возможным объектом является * {@link String} * * / public String getL () {return l;} / ** * Устанавливает значение свойства l.* * @param value * допустимым объектом является * {@link String} * * / public void setL (String value) {this.l = value;}}

У меня есть тип объекта, если я пытаюсь получить данные, используя

.getTextWithLayout().get(0).getContent()

Так как же читать данные в объекте?

Спасибо

1 Ответ

0 голосов
/ 29 октября 2010

Ваш сложный тип "text-with-layout-type" содержит тег "any". Это означает, что JAXB должен иметь возможность обрабатывать данные любого типа, поэтому он напечатал данные как Object.

С кодом, как есть, вам нужно использовать getClass () или instanceof, чтобы выяснить тип. Если вы хотите, чтобы это свойство выглядело определенным образом, сообщите мне об этом через обновление вопроса, и мы сможем обсудить альтернативные сопоставления, чтобы включить это поведение.

...