如果命名空间声明在 SOAP 信封上,如何使用 JAXB 取消定义 SOAP 响应?
JAXB 只有在 SOAP 信封已被删除的情况下才能取消编组 XML。但是,我尝试取消马歇尔的 SOAP 响应在 soap 信封上有其命名空间声明。如果我删除 soap 信封,命名空间声明也将被删除。因此,标记的前缀将引用 none。这会导致 JAXB 引发错误。如果在 SOAP 信封上声明了命名空间,如何使用 JAXB 取消配置 SOAP 响应?
我需要解构的类似XML示例如下:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://example.com/">
<soapenv:Body>
<ns:getNumberResponse>
<number>123456789</number>
</ns:getNumberResponse>
</soapenv:Body>
</soapenv:Envelope>
如果我取下肥皂信封,就会发生这种情况:
<ns:getNumberResponse>
<number>123456789</number>
</ns:getNumberResponse>
如果我删除了 soap 信封,命名空间声明也将消失。JAXB 将无法取消上述 xml 的编组,因为缺少前缀“ns”的命名空间定义。因此,它将返回一条错误消息。我该如何修复它?"The prefix "ns" for element "ns:getNumberResponse" is not bound."
请注意,我使用的是 JDK 1.5。我不确定在JDK 1.6中是否有办法解决这个问题。我之所以能够使用 JAXB,是因为我下载了使用 JAXB 所需的 jar。