Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid and .NET Webservice - parsing the returned xml
    primarykey
    data
    text
    <p>So I have done a few "minor" things with web services and had some success, but when I attempted to tinker around with some stuff for fun I was encountering what I believe is me incorrectly parsing out the data to get the information that I need. I can get the entire xml as a string but not just the 3 programs that I need. The getPrograms and getInstitutions are similar enough that if I can get the programs part parsed right I can get the institutions. Where I am getting confused is what I believe is the "tags" and how much they differ from any tutorials to what I am actually using. I also went the way of the XmlPullParser but do not know if this is the best way about doing this (is it?). The format of what I am accessing is as follows:</p> <pre><code>&lt;DataSet&gt; &lt;xs:schema id="NewDataSet"&gt; &lt;xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"&gt; &lt;xs:complexType&gt; &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt; &lt;xs:element name="tblPrograms"&gt; &lt;xs:complexType&gt; &lt;xs:sequence&gt; &lt;xs:element name="Program" type="xs:string" minOccurs="0"/&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;/xs:element&gt; &lt;/xs:choice&gt; &lt;/xs:complexType&gt; &lt;/xs:element&gt; &lt;/xs:schema&gt; &lt;diffgr:diffgram&gt; &lt;NewDataSet&gt; &lt;tblPrograms diffgr:id="tblPrograms1" msdata:rowOrder="0"&gt; &lt;Program&gt;Ancillary&lt;/Program&gt; &lt;/tblPrograms&gt; &lt;tblPrograms diffgr:id="tblPrograms2" msdata:rowOrder="1"&gt; &lt;Program&gt;Ancillary ESY&lt;/Program&gt; &lt;/tblPrograms&gt; &lt;tblPrograms diffgr:id="tblPrograms3" msdata:rowOrder="2"&gt; &lt;Program&gt;REAP&lt;/Program&gt; &lt;/tblPrograms&gt; &lt;/NewDataSet&gt; &lt;/diffgr:diffgram&gt; &lt;/DataSet&gt; </code></pre> <p>And my source code is as follows:</p> <pre><code>public class FirstScreen extends Activity { /** Called when the activity is first created. */ private static final String NAMESPACE = "http://tempuri.org/"; private static final String URL = "http://www.ces.org/android/android.asmx";//must point to where service is located /** HelloAndroid method */ //SOAP_ACTION = NAMESPACE + METHODNAME private static final String SOAP_ACTION = "http://tempuri.org/HelloAndroid"; private static final String METHOD_NAME = "HelloAndroid"; /** SelectInstitutionTypes method */ //SOAP_ACTION = NAMESPACE + METHODNAME private static final String SOAP_ACTION_INSTITUTIONS = "http://tempuri.org/SelectInstitutionTypes"; private static final String METHOD_NAME_INSTITUTIONS = "SelectInstitutionTypes"; /** SelectPrograms method */ //SOAP_ACTION = NAMESPACE + METHODNAME private static final String SOAP_ACTION_PROGRAMS = "http://tempuri.org/SelectPrograms"; private static final String METHOD_NAME_PROGRAMS = "SelectPrograms"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); getHelloAndroid(); //getInstitutionTypes(); getPrograms(); }//end of onCreate private void getPrograms() { TextView tv3 = (TextView)findViewById(R.id.TextView03);//contains SelectInstitutionTypes information SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME_PROGRAMS); //soap serialization SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);//running 1.1 soapEnvelope.dotNet=true;//to handle .net services asmx/aspx soapEnvelope.setOutputSoapObject(request);//package request //create transport object(s) HttpTransportSE aht = new HttpTransportSE(URL); try { aht.debug = true; //make the call aht.call(SOAP_ACTION_PROGRAMS, soapEnvelope); //in/out SoapObject resultString = (SoapObject)soapEnvelope.getResponse(); XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); XmlPullParser xpp = factory.newPullParser(); xpp.setInput(new StringReader (resultString.toString())); int eventType = xpp.getEventType(); while(eventType != XmlPullParser.END_DOCUMENT){ if(eventType == XmlPullParser.START_DOCUMENT) { System.out.println("Start document"); } else if(eventType == XmlPullParser.START_TAG) { if(xpp.getName().equals("Program")) System.out.println("Start tag "+xpp.getName()); System.out.println("Program"+ xpp.getAttributeName(0)); } else if(eventType == XmlPullParser.END_TAG) { System.out.println("End tag "+xpp.getName()); } else if(eventType == XmlPullParser.TEXT) { System.out.println("Text "+xpp.getText()); } eventType = xpp.next(); } System.out.println("End document"); tv3.setBackgroundColor(Color.BLUE); tv3.setText("STATUS: " + resultString /*ks.toString()*/ + "\n\n" + "AHTHOST: " + aht.getHost() + "\n\n" + "NAHT STRING: " + aht.toString()); } catch(Exception e) { e.toString(); e.printStackTrace(); tv3.setText("EXCEPTION NAME: " + e.toString().toString() + "\n\n" + "EXCEPTION MESSAGE: " + e.getMessage() + " "); } }//end of getPrograms private void getInstitutionTypes() { TextView tv2 = (TextView)findViewById(R.id.TextView02);//contains SelectInstitutionTypes information //tv2.setText("TODO: SelectInstitutionTypes"); SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME_INSTITUTIONS); //soap serialization SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);//running 1.1 soapEnvelope.dotNet=true;//to handle .net services asmx/aspx soapEnvelope.setOutputSoapObject(request);//package request //create transport object(s) HttpTransportSE aht = new HttpTransportSE(URL); try { aht.debug = true; //make the call aht.call(SOAP_ACTION_INSTITUTIONS, soapEnvelope); //in/out SoapObject resultString = (SoapObject)soapEnvelope.getResponse(); tv2.setText("STATUS: " + resultString /*ks.toString()*/ + "\n\n" + "AHTHOST: " + aht.getHost() + "\n\n" + "NAHT STRING: " + aht.toString()); } catch(Exception e) { e.toString(); e.printStackTrace(); tv2.setText("EXCEPTION NAME: " + e.toString().toString() + "\n\n" + "EXCEPTION MESSAGE: " + e.getMessage() + " "); } }//end of getInstitutionTypes public void getHelloAndroid() { TextView tv = (TextView)findViewById(R.id.TextView01);//contains HelloAndroid information SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); //soap serialization SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);//running 1.1 soapEnvelope.dotNet=true;//to handle .net services asmx/aspx soapEnvelope.setOutputSoapObject(request);//package request //create transport object(s) HttpTransportSE aht = new HttpTransportSE(URL); try { aht.debug = true; //make the call aht.call(SOAP_ACTION, soapEnvelope); //in/out SoapPrimitive resultString = (SoapPrimitive)soapEnvelope.getResponse(); tv.setBackgroundColor(Color.BLUE); tv.setText("STATUS: " + resultString + "\n\n" + "AHTHOST: " + aht.getHost() + "\n\n" + "NAHT STRING: " + aht.toString()); } catch(Exception e) { e.toString(); e.printStackTrace(); tv.setText("EXCEPTION NAME: " + e.toString().toString() + "\n\n" + "EXCEPTION MESSAGE: " + e.getMessage() + " "); } }//end of getHelloAndroid }//end of activity </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload