簡體   English   中英

XML SOAP 信封來 null 與 ZAB6632D55A4B5133FA2Z1DAF8568374F2

[英]XML SOAP Envelope coming null with JAXB

I'm trying to unmarshal a XML with JAXB to convert it into an object, but the SOAPPArt, SOAPEnvelope and the SOAPBody are coming null I don't know why..

我也嘗試在沒有 SOAPMessage 的情況下解組,但沒有成功。

這是我試圖解組的 XML:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <ObjectXmlResponse
            xmlns="http://tempuri.org/testing">
            <ResultadoXml xmlns="www.site.com.br">
                <CodigoOperacao>dsadsdas</CodigoOperacao>
                <OperacoesObjetoAnalise />
                <Respostas>
                    <Resposta Final="true">
                        <Sistema>dsadfd</Sistema>
                        <Criterio>fdsfdsf</Criterio>
                        <Resposta>.</Resposta>
                    </Resposta>
                </Respostas>
            </ResultadoXml>
        </ObjectXmlResponse>
    </soap:Body>
</soap:Envelope> 

以下是課程:

@XmlRootElement(name="ObjectXmlResponse", namespace="http://tempuri.org/testing")
@XmlAccessorType(XmlAccessType.FIELD)
public class ObjectXmlResponse {    

    @XmlElement(name="ResultadoXml", namespace="www.site.com.br")
    private ResultadoXml resultadoXml;

    public ResultadoXml getResultadoXml() {
        return resultadoXml;
    }

    public void setResultadoXml(ResultadoXml resultadoXml) {
        this.resultadoXml = resultadoXml;
    }

}
@XmlRootElement(name="ResultadoXml", namespace="www.site.com.br")
@XmlAccessorType(XmlAccessType.FIELD)
public class ResultadoXml {

    private static final long serialVersionUID = 1L;

    @XmlElement(name="CodigoOperacao")
    private String codigoOperacao;

    @XmlElement(name="OperacoesObjetoAnalise")
    private String OperacoesObjetoAnalise;  

    @XmlElement(name="Respostas")
    private Respostas respostas;

    @XmlElement(name="Drivers")
    private Drivers drivers;

    public String getCodigoOperacao() {
        return codigoOperacao;
    }

    public void setCodigoOperacao(String codigoOperacao) {
        this.codigoOperacao = codigoOperacao;
    }

    public Respostas getRespostas() {
        return respostas;
    }

    public void setRespostas(Respostas respostas) {
        this.respostas = respostas;
    }

    public Drivers getDrivers() {
        return drivers;
    }

    public void setDrivers(Drivers drivers) {
        this.drivers = drivers;
    }   

    public String getOperacoesObjetoAnalise() {
        return OperacoesObjetoAnalise;
    }

    public void setOperacoesObjetoAnalise(String operacoesObjetoAnalise) {
        OperacoesObjetoAnalise = operacoesObjetoAnalise;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }

    public String toString(){
        return "ResultadoXml [codigoOperacao=" + codigoOperacao +"]";
    }

}

這是解組:

public static void main(String[] args) {        

        JAXBContext jaxbContext;        

        try {

            String relatorio = <the xml>;

            InputStream is = new ByteArrayInputStream(relatorio.getBytes());

            SOAPMessage message = MessageFactory.newInstance().createMessage(null, is);

            SOAPPart sp = message.getSOAPPart();
            SOAPEnvelope env = sp.getEnvelope();
            SOAPBody bdy = env.getBody();

            jaxbContext = JAXBContext.newInstance(ObjectXmlResponse.class);

            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();

            ObjectXmlResponse response = (ObjectXmlResponse) jaxbUnmarshaller.unmarshal(new StringReader(relatorio));

            System.out.println(response);


        } catch(Exception ex) {
            ex.printStackTrace();
        }   

        System.exit(0);

    }

我需要填充 ObjectXmlResponse object 及其屬性,如 ResultadoXml。

在所有元素上指定命名空間(或在包上使用 @XmlSchema)並使用解組 SOAP 正文內容

ObjectXmlResponse response = (ObjectXmlResponse) jaxbUnmarshaller.unmarshal(bdy.extractContentAsDocument());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM