Jaxb映射anytype

时间:2017-07-20 13:07:24

标签: java web-services jaxb

我正在尝试在java中构建一个soap web服务。我在soap中输入参数的方法之一应该是

<s:element name="GetDocumentInfo">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="pPassword" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="xmlDoc">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>

在我的java类中,我将它映射到java变量

@XmlElement(name = "password")
private java.lang.String password;
@XmlElement(name = "doc")
private java.util.List<java.lang.Object> doc;

生成wsdl输出

<xs:complexType name="GetDocumentInfo">
<xs:sequence>
<xs:element minOccurs="0" name="password" type="xs:string"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="doc" type="xs:anyType"/>
</xs:sequence>
</xs:complexType>

如果我使用Object,我会收到JAXB编组错误。什么应该是doc变量类型?

soap客户端是一个通用程序(.net),当他们导入wsdl时会出现以下错误:

类型的对象&#39; System.Xml.XmlDocument&#39;无法转换为类型&#39; System.Object []&#39;

我对jaxb并不熟悉。

我应该创建一个包含Xml和XmlDocument变量的类吗?什么应该是XmlDocument变量类型?

1 个答案:

答案 0 :(得分:0)

以下是需要包含的课程的详细信息。

public class doc<T> {

@XmlMixed
@XmlAnyElement(lax = true)
protected List<T> content;

public List<T> getContent() {
    if (content == null) {
        content = new ArrayList<T>();
    }
    return this.content;
}

public void setContent() {
    content = this.content;
}

}