Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为soapxml字符串生成java类_Java_Xml_Spring_Web Services_Jaxb - Fatal编程技术网

为soapxml字符串生成java类

为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

如何将此xml字符串转换为java对象?我尝试了各种方法,也许是xml的格式

我正在使用Java11,通过发送post请求得到了SOAP响应。我希望能够使用outXML字符串。我确实有信封、正文、TransmitResponse和outXML的其他类。但我希望能够首先调用至少根

错误:

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;
    }

}