2016-11-11 6 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の配列が来る位置を取得し、私はAに行ってきましたベクター。 コードに従う:

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()); 

        } 



       } 

      } 
関連する問題