如果肥皂信封已被删除,JAXB 只能解组 XML。但是,我试图解组的 SOAP 响应在肥皂信封上有其名称空间声明。如果我删除肥皂信封,命名空间声明也将被删除。因此,标签的前缀将指代无。这会导致 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>
如果我删除了肥皂信封,命名空间声明也将消失。JAXB 将无法解组上述 xml,因为缺少前缀“ns”的命名空间定义。因此,它将返回一条"The prefix "ns" for element "ns:getNumberResponse" is not bound."
错误消息。我如何解决它?
请注意,我使用的是 JDK 1.5。我不确定在 JDK 1.6 中是否有办法解决这个问题。我能够使用 JAXB,因为我下载了使用 JAXB 所需的 jar。