簡體   English   中英

使用JAVA切片SOAP響應

[英]slice SOAP response with JAVA

我需要得到一個SOAP響應的主體,但是身體有一個孩子是我需要的內容的父母,我不知道如何讓這個孩子的身體。

響應:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns2:consultaCEPResponse xmlns:ns2="http://cliente.bean.master.sigep.bsb.correios.com.br/">
            <return>
                <bairro>Asa Norte</bairro>
                <cep>70002900</cep>
                <cidade>Brasilia</cidade>
                <complemento />
                <complemento2 />
                <end>SBN Quadra 1 Bloco A</end>
                <id>0</id>
                <uf>DF</uf>
            </return>
        </ns2:consultaCEPResponse>
    </soap:Body>
</soap:Envelope>

我想要的是“bairro”,“cep”,“cidade”等。

代碼我用來得到回應:

SOAPMessage rp = conn.call(msg, urlval);

// I tried this, but didn't work
//QName bodyName = new QName("http://cliente.bean.master.sigep.bsb.correios.com.br/", "consultaCEPResponse", "ns2");

Iterator itr = rp.getSOAPBody().getChildElements(bodyName);
while (itr.hasNext()) {
    Node node = (Node) itr.next();
    if (node.getNodeType() == Node.ELEMENT_NODE) {
        Element ele = (Element) node;
        System.out.println("\n" + ele.getNodeName() + " = " + ele.getTextContent());
    }
}

我使用getElementsByTagName()來獲取<return>元素,然后使用getChildNodes()找到它的子元素

String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Body><ns2:consultaCEPResponse xmlns:ns2=\"http://cliente.bean.master.sigep.bsb.correios.com.br/\"><return><bairro>Asa Norte</bairro><cep>70002900</cep><cidade>Brasilia</cidade><complemento /><complemento2 /><end>SBN Quadra 1 Bloco A</end><id>0</id><uf>DF</uf></return></ns2:consultaCEPResponse></soap:Body></soap:Envelope>";
SOAPMessage rp = MessageFactory.newInstance().createMessage(null, new ByteArrayInputStream(xml.getBytes()));

NodeList returnNodes = rp.getSOAPBody().getElementsByTagName("return");
if (returnNodes.getLength() == 1) {
    Node returnNode = returnNodes.item(0);
    NodeList elements = returnNode.getChildNodes();
    for (int i = 0; i < elements.getLength(); i++) {
        Node node = elements.item(i);
        System.out.println(node.getNodeName() + " = " + node.getTextContent());
    }
} else {
    // handle empty response case
}

產量

bairro = Asa Norte
cep = 70002900
cidade = Brasilia
complemento = 
complemento2 = 
end = SBN Quadra 1 Bloco A
id = 0
uf = DF

暫無
暫無

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

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