我正在使用JAXB来解析SOAP响应中的xml元素.我已经为xml元素定义了POJO类.我已经测试了没有命名空间的pojo类,并且前缀工作正常.但是当我尝试用名称空间解析并且前缀面向以下异常时.要求解析来自SOAPMessage对象的输入
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://schemas.xmlsoap.org/soap/envelope/", local:"Envelope"). Expected elements are <{}Envelope>
试图通过在package-info.java中为包创建@XMLSchema来修复,并将此文件放在包文件夹中.任何人都可以指导我前进吗?
提到这篇文章,但没有帮助我.
编辑:XMLSchema
@javax.xml.bind.annotation.XmlSchema (
xmlns = { @javax.xml.bind.annotation.XmlNs(prefix = "env",
namespaceURI="http://schemas.xmlsoap.org/soap/envelope/"),
@javax.xml.bind.annotation.XmlNs(prefix="ns3", namespaceURI="http://www.xxxx.com/ncp/oomr/dto/")
}
)
package com.one.two;
Run Code Online (Sandbox Code Playgroud)
提前致谢
我面对这个问题已经有一个多月了,因此,您的帮助让我感到非常满意,实际上,我在询问一种可以让我解析SOAP消息(请求)以检索所需信息的方法,例如安全信息(如果有)以及消息正文中的信息
感谢您回答我,但是知道我正在处理另一个问题,即WS-SecurityPolicy,我必须最终解析一个像这样的xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
</wsp:Policy>
</sp:TransportBinding>
<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient" />
</wsp:Policy>
</sp:SignedSupportingTokens>
Run Code Online (Sandbox Code Playgroud)
'
知道此XML文件名为Policy.xml,并且包含必须存在的WS-SecurityPolicy规则。