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

发布于 2024-12-09 02:55:26 字数 1000 浏览 0 评论 0原文

我正在使用 JAXB 解组 SOAP 消息,虽然大部分消息在解组时看起来都很好,但当其内容应为纯文本时,有一个元素为 null。如果我将其内容更改为 xml(例如 Something,它工作正常。

我相信描述这部分的架构如下:

<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 元素这个架构,Message 元素,它的类型是“xsd:anyType”,这是否意味着它可以容纳任何内容?但是当使用 JAXB 解组时,任何非结构化内容(逐字)文本)似乎被省略了。

我可以采取什么措施来纠正这种情况?

有谁知道为什么, 埃夫莱特

I'm unmarshalling a SOAP-message with JAXB, and while most of the message looks fine when unmarshalled, one element is null when its content should be plain text. If I change its content to xml (e.g. <Test> Something </test>, it works fine.

I beleive the schema describing this part is the following:

<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>

The problem is with the LAST element in this schema, the Message element. Its type is "xsd:anyType", doesn't that mean it could hold anything? But when unmarshalling with JAXB, any non-structured content (verbatim text) seems to get omitted.

Does anybody know why, and what I might do to remedy the situation?

Regards,
Eflite

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

安稳善良 2024-12-16 02:55:26

此页面(注意,回程机存档项目)是寻找答案的最佳位置;它提供了一个关于如何解决您的场景的清晰示例。

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

This page(note, wayback machine archived item) is the best place to look for the answer; it provides a clear example on how to address your scenario.

I am quoting from there:
"If you need to marshal arbitrary content you'll have to create a content tree according to org.w3c.dom. Sun's JAXB currently uses the implementation from Apache's Xerces, i.e., class apache.xerces.internal.dom.ElementNSImpl."

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文