2012-05-25 51 views
1

我的問題是Dom Parser不能在Android 4.0中工作,但它在2.2上工作,如果我在我的4.0仿真器中運行項目比下面的行不執行並且不會給出任何錯誤。Dom解析器在Android 4.0中API

Document doc = db.parse(inStream); 

以下是我的Java代碼: -

public class TestParsingActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     StringBuffer sb = new StringBuffer(); 

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
       .permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

     System.setProperty("http.proxySet", "true"); 
     System.setProperty("http.proxyHost", "192.168.1.220"); 
     System.setProperty("http.proxyPort", "315"); 

     String NAMESPACE = "Dipak"; 
     String SOAP_ACTION = "Dipak/Start"; 
     String METHOD_NAME = "Start"; 
     String url = "http://google.co.uk/Dip/service1.asmx"; 

     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
     PropertyInfo p = new PropertyInfo(); 
     String qry = "select Password from Profiles where ID = (select uid from userprofiles where name = 'Dipak')"; 

     p.setName("SQL"); 
     p.setValue(qry); 
     request.addProperty(p); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
       SoapEnvelope.VER11); 
     envelope.dotNet = true; 
     envelope.setOutputSoapObject(request); 
     HttpTransportSE httpTransport = new HttpTransportSE(url); 
     httpTransport.debug = true; 

     System.out.println("three**************"); 

     try { 
      httpTransport.call(SOAP_ACTION, envelope); 
      System.out.println("four**************"); 
      // SoapObject response=(SoapObject)envelope.bodyIn; 
      SoapObject response = (SoapObject) envelope.getResponse(); 

      System.out.println("response =====>>>> " 
        + response.getProperty(0).toString()); 
      // SoapObject response=(SoapObject)envelope.getResponse(); 
      // SoapPrimitive response = (SoapPrimitive)envelope.getResponse(); 
      System.out.println("success**************"); 

      sb.append(response); 
      System.out.println("Data from Search Job =====>>>> " 
        + sb.toString()); 
      // return response.toString(); 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (XmlPullParserException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     try { 
      DocumentBuilderFactory factory = DocumentBuilderFactory 
        .newInstance(); 

      DocumentBuilder db = factory.newDocumentBuilder(); 
      InputSource inStream = new InputSource(); 

      System.out.println("Data from try =====>>>> " + sb.toString()); 

      inStream.setCharacterStream(new StringReader(sb.toString())); 

      System.out 
        .println("Data from try =====>>>>11111111111111111111111111111 "); 

      Document doc = db.parse(inStream); 
      System.out 
        .println("Data from try =====>>>>22222222222222222222222222222 "); 

      Element root = doc.getDocumentElement(); 

      String root1 = doc.getTextContent(); 
      System.out 
        .println("Value of root................................................................................" 
          + root); 
      System.out 
        .println("Value of root1................................................................................" 
          + root1); 
      System.out 
        .println("................................................................................5"); 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 

    } 
} 

任何幫助,將不勝感激,對不起,我的英語不好溝通。

回答

0

你爲什麼不使用

response.getPropertyAsString(index); 

response.getPropertyAsString("PROPERTY_NAME"); 

但是您仍想使用Dom解析器,您可以使用HttpTransportSE.responseDump獲取XML格式的響應,並嘗試解析XML而不是ksaop2的響應格式。

+0

請給一些解釋,或者如果你有任何示例鏈接,請給我。 –

+0

謝謝JPriest,我的問題解決了。 –