@XmlAttribute出现@XmlElement

@XmlAttribute出现@XmlElement

问题描述:

在我的web服务我定义一个变量作为@XmlAttribute@XmlAttribute出现@XmlElement

@XmlAttribute 
protected String domain; 

但是,当我让通过SOAPUI查询时,它显示为一个XML元素:

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

我在我的代码中找不到任何错误..

如何解决此问题?

我已经重新实现与Axis 2项目代码生成器。现在它可以工作。

我不知道什么是错误..

您在字段上显示注释,但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> 
+0

我试着这样说:@XmlAttribute 公共字符串getDomain(){ 回报域; }不起作用 – Starbax

+1

用一个工作示例更新了我的答案。 –

+0

我已更新我的帖子,现在有更多的代码 – Starbax