我已经被一个简单的程序卡住了好几天
我正在尝试对一些 XML 文档进行数字签名,然后将其添加到 jaxb 元素中,这样我就可以在肥皂消息中发送它。我能够设置 jaxb 元素值,对其进行编组并签名。当我再次解组时遇到问题,我收到一个错误:
DefaultValidationEventHandler: [FATAL_ERROR]: unexpected element (uri:"http://someuri",
local:"SomeObject"). Expected elements are <someuri#DifferentObject}
根据错误“预期元素”恰好是 XML 数字签名(我的主 jaxb 的子元素)
为了解决这个问题,我将 @XmlRootElement(name = "SomeObject") 添加到我的 jaxb 类模型中,它可以毫无问题地解组,但是 DigitalSignature 节点(子元素)的命名空间向上移动。这是错误的,因为我的 XML 数字签名被破坏,更糟糕的是,当我发送肥皂消息时,命名空间在包装类中移到了上层,因此原始签名数据完全不同。问题是如何避免在 jaxb 和 JAXWS-RI/2.2.6 中重新定位命名空间?