我正在使用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
答案 0 :(得分:2)
This page(注意,Wayback machine archived item)是寻找答案的最佳地点;它提供了一个关于如何解决您的场景的明确示例。
我从那里引用: “如果你需要编组任意内容,你必须根据org.w3c.dom创建一个内容树.Sun的JAXB目前使用Apache的Xerces实现,即类apache.xerces.internal.dom.ElementNSImpl 。“