@XmlAttribute отображается как @XmlElement - PullRequest
0 голосов
/ 25 августа 2011

В моем веб-сервисе я определяю переменную как @XmlAttribute:

@XmlAttribute
protected String domain;

Но когда я делаю запрос через SoapUi, он выглядит как элемент XML:

<ns:domain>domain</ns:domain>

Я не могу найти ошибку в своем коде ..

Как мне решить эту проблему?

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Я переопределил проект с помощью генератора кода Axis 2.Теперь это работает.

Я не знаю, в чем была ошибка ..

1 голос
/ 25 августа 2011

Вы показываете аннотацию в поле, но JAXB использует доступ по свойству (метод получения / установки) по умолчанию. Вы изменили доступ JAXB по умолчанию? Попробуйте вместо этого добавить аннотацию к методу получения.

Редактировать: Поскольку у вас возникли проблемы, вот исполняемый пример:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.*;
import java.io.StringWriter;

public static void main(String[] args) throws Exception {
    Foo foo = new Foo("my attribute value", "my element value");
    Marshaller marshaller = JAXBContext.newInstance(Foo.class).createMarshaller();
    StringWriter stringWriter = new StringWriter();
    marshaller.marshal(foo, stringWriter);
    System.out.println(stringWriter);
}

@XmlRootElement
static class Foo {
    private String anAttribute;
    private String anElement;

    Foo() {}

    public Foo(String anAttribute, String anElement) {
        this.anAttribute = anAttribute;
        this.anElement = anElement;
    }

    @XmlAttribute
    public String getAnAttribute() { return anAttribute; }
    @XmlElement
    public String getAnElement() { return anElement; }
}

Вывод (в формате):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<foo anAttribute="my attribute value">
    <anElement>my element value</anElement>
</foo>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...