使用JAXB解组SOAP会使ANY元素为空(null)

时间:2011-10-11 10:48:51

标签: xml soap xsd jaxb

我正在使用JAXB解组SOAP消息,虽然大部分消息在解组时看起来很好,但是当一个元素的内容应该是纯文本时,一个元素为null。如果我将其内容更改为xml(例如<Test> Something </test>,则可以正常工作。

我相信描述这部分的模式如下:

<xsd:complexType name="NotificationMessageHolderType" >
            <xsd:sequence>
               <xsd:element name="Topic" 
                            type="wsnt:TopicExpressionType" 
                            minOccurs="1" maxOccurs="1" />
               <xsd:element name="ProducerReference" 
                            type="wsa:EndpointReferenceType" 
                            minOccurs="1" maxOccurs="1" />
               <xsd:element name="Message" type="xsd:anyType" 
                            minOccurs="1" maxOccurs="1" />
            </xsd:sequence>
         </xsd:complexType>

问题在于此架构中的LAST元素,消息元素。它的类型是“xsd:anyType”,这是不是意味着它可以容纳任何东西?但是当使用JAXB进行解组时,任何非结构化内容(逐字文本)似乎都会被省略。

有人知道为什么,以及我可以做些什么来纠正这种情况?

此致 Eflite

1 个答案:

答案 0 :(得分:2)

This page(注意,Wayback machine archived item)是寻找答案的最佳地点;它提供了一个关于如何解决您的场景的明确示例。

我从那里引用: “如果你需要编组任意内容,你必须根据org.w3c.dom创建一个内容树.Sun的JAXB目前使用Apache的Xerces实现,即类apache.xerces.internal.dom.ElementNSImpl 。“