【发布时间】:2012-07-13 00:27:18
【问题描述】:
只有在肥皂信封已被移除时,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。
【问题讨论】:
标签: java xml soap jaxb unmarshalling