为soapxml字符串生成java类
如何将此xml字符串转换为java对象?我尝试了各种方法,也许是xml的格式 我正在使用Java11,通过发送post请求得到了SOAP响应。我希望能够使用outXML字符串。我确实有信封、正文、TransmitResponse和outXML的其他类。但我希望能够首先调用至少根 错误:为soapxml字符串生成java类,java,xml,spring,web-services,jaxb,Java,Xml,Spring,Web Services,Jaxb,如何将此xml字符串转换为java对象?我尝试了各种方法,也许是xml的格式 我正在使用Java11,通过发送post请求得到了SOAP响应。我希望能够使用outXML字符串。我确实有信封、正文、TransmitResponse和outXML的其他类。但我希望能够首先调用至少根 错误: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://schemas.xmlsoap.org/soap/envelope
javax.xml.bind.UnmarshalException: unexpected element
(uri:"http://schemas.xmlsoap.org/soap/envelope/", local:"Envelope").
Expected elements are <{http://schemas.xmlsoap.org/soap/envelope/}SOAP-ENV:Envelope>
实施:
JAXBContext jaxbContext = JAXBContext.newInstance( Envelope.class );
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
StringBuffer xmlStr = new StringBuffer( response.getBody() );
Envelope itransmit = (Envelope) jaxbUnmarshaller.unmarshal( new StreamSource( new StringReader(xmlStr.toString())));
System.out.println(itransmit.getBody());
return response.toString();
生成类的最简单方法是使用wsdl到java插件。例如,如果您使用的是CXF和maven,则可以使用。这将为您生成java代码 您也可以尝试,这是未经测试的代码:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Envelope", namespace = "http://schemas.xmlsoap.org/soap/envelope/")
public class Envelope {
@XmlElement(name = "Body", namespace="http://schemas.xmlsoap.org/soap/envelope/")
String body;
// Getter Methods
public String getBody() {
return body;
}
// Setter Methods
public void setBody(String body) {
this.body = body;
}
}
生成类的最简单方法是使用wsdl到java插件。例如,如果您使用的是CXF和maven,则可以使用。这将为您生成java代码 您也可以尝试,这是未经测试的代码:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Envelope", namespace = "http://schemas.xmlsoap.org/soap/envelope/")
public class Envelope {
@XmlElement(name = "Body", namespace="http://schemas.xmlsoap.org/soap/envelope/")
String body;
// Getter Methods
public String getBody() {
return body;
}
// Setter Methods
public void setBody(String body) {
this.body = body;
}
}
谢谢你的回复!1.很遗憾,我没有访问wsdl文件的权限。我们签署了请求书和所有文件。在outXML内部,我们有加密的真实响应和所需的信息。2.我把它改成了你的样子,我不再有这个错误了!但是,我有一个新错误:nulljava.lang.NullPointerException。xml字符串已完成,但程序似乎找不到它?暂时忘记它是web服务。尝试通过jaxb仅序列化/反序列化xml,并查看映射是否正确。感谢您的回复!1.很遗憾,我没有访问wsdl文件的权限。我们签署了请求书和所有文件。在outXML内部,我们有加密的真实响应和所需的信息。2.我把它改成了你的样子,我不再有这个错误了!但是,我有一个新错误:nulljava.lang.NullPointerException。xml字符串已完成,但程序似乎找不到它?暂时忘记它是web服务。尝试通过jaxb仅序列化/反序列化xml,并查看映射是否正确。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Envelope", namespace = "http://schemas.xmlsoap.org/soap/envelope/")
public class Envelope {
@XmlElement(name = "Body", namespace="http://schemas.xmlsoap.org/soap/envelope/")
String body;
// Getter Methods
public String getBody() {
return body;
}
// Setter Methods
public void setBody(String body) {
this.body = body;
}
}