@XmlAttribute出现@XmlElement
问题描述:
在我的web服务我定义一个变量作为@XmlAttribute
:@XmlAttribute出现@XmlElement
@XmlAttribute
protected String domain;
但是,当我让通过SOAPUI查询时,它显示为一个XML元素:
<ns:domain>domain</ns:domain>
我在我的代码中找不到任何错误..
如何解决此问题?
答
您在字段上显示注释,但JAXB默认使用属性(getter/setter方法)访问。您是否更改了JAXB的默认访问权限?尝试将注释放在getter方法上。
编辑:因为你似乎遇到了问题,这里是一个可执行的例子:
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>
我试着这样说:@XmlAttribute 公共字符串getDomain(){ 回报域; }不起作用 – Starbax
用一个工作示例更新了我的答案。 –
我已更新我的帖子,现在有更多的代码 – Starbax