2016-11-11 81 views
2

我對如何解析我的服務器發送給我的XML存在一些疑問。我可以獲取數據,直到Cobranca標記,但在那之後,它會發送一個數組,我無法獲取該數據。下面是代碼的一部分。如何解析一個具有向量到另一個向量的XML?

XML:

<return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:DebitosPendentes[19]"> 
       <item xsi:type="tns:DebitosPendentes"> 
        <Vencimento xsi:type="xsd:string">2016-05-07</Vencimento> 
        <ValorAtualizado xsi:type="xsd:decimal">102.00</ValorAtualizado> 
        <Valor xsi:type="xsd:decimal">100.00</Valor> 
        <Sequencia xsi:type="xsd:string">182</Sequencia> 
        <NroBanco xsi:type="xsd:int">39</NroBanco> 
        <BcoCobr xsi:type="xsd:int">237</BcoCobr> 
        <Cobranca xsi:type="xsd:string">S</Cobranca> 
        <Itens xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:ListaItens[1]"> 
         <item xsi:type="tns:ListaItens"> 
          <Descricao xsi:type="xsd:string">COBR ws</Descricao> 
          <ValorItem xsi:type="xsd:decimal">100.00</ValorItem> 
         </item> 
        </Itens> 
       </item> 

代碼的Java

public void buscaDebitosPendentes(int codigoCliente){ 


     SoapObject request = new SoapObject("urn:RouterBoxMobile","BuscarDebitosPendentes"); 

     SoapObject chaveIntegracao = new SoapObject("urn:RouterBoxMobile","BuscarDebitosPendentes"); 
     chaveIntegracao.addProperty("ChaveIntegracao",chaveDeIntegracao); 
     request.addProperty("Autenticacao",chaveIntegracao); 

     SoapObject codigo = new SoapObject("urn:RouterBoxMobile","BuscarDebitosPendentes"); 

     codigo.addProperty("CodigoCliente",codigoCliente); 

     request.addProperty("DadosDebitosPendentes",codigo); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.setOutputSoapObject(request); 
     envelope.implicitTypes=true; 

     HttpTransportSE httpTransportSE = new HttpTransportSE(URL_WEBSERVICE); 

     httpTransportSE.debug=true; 

     try { 
      httpTransportSE.call("",envelope); 

      Log.d("Request",httpTransportSE.requestDump.toString()); 
      Log.d("Response",httpTransportSE.responseDump.toString()); 


      @SuppressWarnings("unchecked") 
      Vector<Object> vector = (Vector<Object>) envelope.getResponse(); 

      Log.d("Response in SOAP",vector.toString()); 

      for (int i=0; i< vector.size();i++){ 
       SoapObject object = (SoapObject) vector.get(i); 
       if (object!=null){ 
        Log.d("Vencimento",object.getProperty("Vencimento").toString()); 
        Log.d("Sequencia",object.getProperty("Sequencia").toString()); 
        Log.d("Descricao",object.getProperty("Descricao").toString()); 


       } 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (XmlPullParserException e) { 
      e.printStackTrace(); 
     } 

    } 

回答

0

我能夠解決以下問題,我得到的位置,XML的陣列來了,我去了向量。 請按照代碼:

Vector<SoapObject> vector = (Vector<SoapObject>) envelope.getResponse(); 


      Log.d("Response in SOAP",vector.toString()); 

      for (int i=0; i< vector.size();i++){ 
       SoapObject object = (SoapObject) vector.get(i); 

       if (object!=null){ 
        Log.d("Vencimento", object.getProperty(0).toString()); 
        Log.d("ValorAtualizado", object.getProperty(1).toString()); 
        Log.d("Valor", object.getProperty(2).toString()); 
        Log.d("Sequencia", object.getProperty(3).toString()); 
        Log.d("NroBanco", object.getProperty(4).toString()); 
        Log.d("BcoCobr", object.getProperty(5).toString()); 
        Log.d("Cobranca", object.getProperty(6).toString()); 

        Vector<Object> itens= (Vector<Object>) object.getProperty(7); 

        for (int j=0; j<itens.size();j++){ 
         SoapObject item =(SoapObject) itens.get(j); 
         Log.d("Descricao", item.getProperty("Descricao").toString()); 
         Log.d("ValorItem", item.getProperty("ValorItem").toString()); 

        } 



       } 

      } 
相關問題