Java apachecxf解析WSDL模式xsd:任何类型

Java apachecxf解析WSDL模式xsd:任何类型,java,web-services,soap,wsdl,cxf,Java,Web Services,Soap,Wsdl,Cxf,我正试图为SOAPWeb服务的问题找到好的、最通用的解决方案。我需要解决的问题是用apachecxf generata使用wsdl2java命令生成的代理替换apacheaxis使用给定WSDL文件生成的代理。 然而,当我使用CXF生成代理并在IDE中打开类时,我意识到: @XmlAnyElement(lax = true) protected List<Object> any; 标签: <any namespace="##any" processContents="

我正试图为SOAPWeb服务的问题找到好的、最通用的解决方案。我需要解决的问题是用apachecxf generata使用
wsdl2java
命令生成的代理替换apacheaxis使用给定WSDL文件生成的代理。 然而,当我使用CXF生成代理并在IDE中打开类时,我意识到:

@XmlAnyElement(lax = true)
    protected List<Object> any;
标签:

<any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" />

我的问题是:解决这个问题的最好方法是什么?我真的需要DOM解析器吗?有什么我错过的吗? 谢谢。

用于在架构中允许任何元素。看

元素使我们能够使用模式未指定的元素扩展XML文档

因此,CXF的映射是正确的。JAXB注释
@xmlanyement(lax=true)
意味着,对于该字段,如果包含用
@XmlRootElement
@xmlementdecl
注释的元素,则将使用相应类的实例填充该字段,如果不是,则该元素将被设置为
org.w3c.dom.element
的实例

请参见一个示例

用于允许模式中的任何元素。看

元素使我们能够使用模式未指定的元素扩展XML文档

因此,CXF的映射是正确的。JAXB注释
@xmlanyement(lax=true)
意味着,对于该字段,如果包含用
@XmlRootElement
@xmlementdecl
注释的元素,则将使用相应类的实例填充该字段,如果不是,则该元素将被设置为
org.w3c.dom.element
的实例


请参见一个示例

,但是,如果我向服务器发送请求,它会响应我怎么办。然后我需要获取数据并调用。result.getAny()。它会给我一个目标。然后我想调用它的方法,但它是对象。Axis将其投射到MessageElement。我可以调用特定的方法。在我的实践中,我想重现这个类的一个功能,所以我需要其中的数据。我想将元素转换为文档类型。根据文档,您可以将对象强制转换为
org.w3c.dom.element
,这将允许您访问dom结构是的,我在问题中提到过。看来我别无选择。谢谢你试图帮助我。我很感激,很乐意帮忙。这里还可以看到我的答案,在第二步中使用JAXB解组器将
元素映射到Java对象(用
@XmlRootElement
注释)。我不确定您是否可以使用它,但是,如果我向服务器发送请求,它会响应我怎么办。然后我需要获取数据并调用.result.getAny()。它将给我对象。然后我想调用它的方法,但它是对象。Axis将它转换为MessageElement。我可以调用特定的方法。在我的实践中,我想复制这个类的一个功能,所以我需要其中的数据。我想将元素转换为文档类型。根据文档,您可以转换对象到
org.w3c.dom.Element
,这将允许您访问dom结构是的,我在我的问题中提到了它。似乎我别无选择。感谢您尝试帮助我。我很感激。很乐意帮助。请参阅我的回答,在第二步中使用JAXB解组器将
元素映射到Java对象(用
@XmlRootElement
注释。我不确定您是否可以使用它
<any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded" />