我开发了一个 Web 服务,它接受和响应一个通用的消息结构。意思是,这个消息结构是通用的。我们使其通用的方式是使用以下 XML 模式:
<xs:complexType name="HeaderType">
<xs:complexType name="MessageType">
<xs:complexType name="PayloadType">
其中 PayloadType 如下:
<xs:complexType name="PayloadType">
<xs:annotation>
<xs:documentation>Payload container</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice>
<xs:element name="CreateExceptionSeverity" type="cmsmsg:ExceptionSeverity" minOccurs="0">
<xs:annotation>
<xs:documentation>CreateExceptionSeverity is a hello world operation that takes in a app id, id, name, and description where the web service creates a new entry in EXCEPTIONSEVERITY table.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="OperationSet" type="cmsmsg:OperationSet" minOccurs="0">
<xs:annotation>
<xs:documentation>Each operation set is a collection of operations that may require operational-integrity and/or sequence control.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Compressed" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>For compressed and/or binary, uuencoded payloads</xs:documentation>
</xs:annotation>
</xs:element>
**<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other">**
<xs:annotation>
<xs:documentation>For XML payloads, usually CIM profiles defined using an XSD in a profile-specific namespace.</xs:documentation>
</xs:annotation>
</xs:any>
</xs:choice>
<xs:element name="Format" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Hint as to format of payload, e.g. XML, RDF, SVF, BINARY, PDF, ...</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
所以,这条线:
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" namespace="##other">
使此结构足够灵活,可以在调用 Web 服务和 Web 服务发回响应时发送数据。该 Web 服务部署在 TIBCO 服务器(使用 Tomcat)上,将通过 SOAP/HTTP 方式调用。
此 Web 服务的客户端是 Java Spring Web 应用程序。我的问题是:Java 代码如何处理这个 Any 元素,因为它需要一个具体的 XML 类型,如整数、字符串或复杂类型?这里的任何方向将不胜感激。