Parsing XML from the Net - Using the SAXParser

Basic Tutorials concerning: GUI, Views, Activites, XML, Layouts, Intents, ...

Re: Parsing XML from the Net - Using the SAXParser

Postby ayush_garg » Sat Aug 06, 2011 1:27 pm

hello plusminus...i am getting a problem. I want to get the data from the working.xml file.
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. - <root>
  2.  <work>
  3.   <taskid taskid="1" />
  4.   <time time="10.10 am" />
  5.   <description description="bapu nagar jaipur" />
  6.   </work>
  7.  <work>
  8.   <taskid taskid="2" />
  9.   <time time="1.25 pm" />
  10.   <description description="raja park jaipur" />
  11.   </work>
  12.   </root>
Parsed in 0.002 seconds, using GeSHi 1.0.8.4
In this file i am only getting the Second work tag data. First work tag data is not displaying in list in android.I have created three java files to do this task. First java file calls the xml file.
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.example;
  2.  
  3. import java.io.IOException;
  4. import java.net.MalformedURLException;
  5. import java.net.URL;
  6. import java.util.Date;
  7.  
  8. import javax.xml.parsers.ParserConfigurationException;
  9. import javax.xml.parsers.SAXParser;
  10. import javax.xml.parsers.SAXParserFactory;
  11.  
  12. import org.xml.sax.InputSource;
  13. import org.xml.sax.SAXException;
  14. import org.xml.sax.XMLReader;
  15.  
  16. import android.app.Activity;
  17. import android.app.AlertDialog;
  18. import android.content.Intent;
  19. import android.os.Bundle;
  20. import android.view.Display;
  21. import android.view.View;
  22. import android.view.View.OnClickListener;
  23. import android.widget.AdapterView;
  24. import android.widget.ArrayAdapter;
  25. import android.widget.ImageButton;
  26. import android.widget.LinearLayout;
  27. import android.widget.ListView;
  28. import android.widget.TextView;
  29. import android.widget.AdapterView.OnItemClickListener;
  30.  
  31. public class GetItDoneCalender extends Activity {
  32.         TextView datetxt;
  33.         AlertDialog alrt;
  34.         String  currentDate;
  35.         ListView timetasklist;
  36.         LinearLayout ll;
  37.        
  38.         private int month;
  39.         private int year;
  40.         private int date;
  41.         private String myList[];
  42.  
  43.         ImageButton nextDate;
  44.         ImageButton previousDate;
  45.  
  46.         private String totalDate;
  47.         Date dt;
  48.         private AlertDialog show;
  49.         private GetItDoneCalender local;
  50.         CalenderDataParsed cdp;
  51.        
  52.         Display getOrient;
  53.  
  54.         public void onCreate(Bundle savedInstanceState) {
  55.                 super.onCreate(savedInstanceState);
  56.                 setContentView(R.layout.calender);
  57.  
  58.                 local = this;
  59.                 datetxt = (TextView) findViewById(R.id.datetxt);
  60.                 timetasklist = (ListView) findViewById(R.id.timetasklist);
  61.                 nextDate = (ImageButton) findViewById(R.id.nextCalButton);
  62.                 previousDate = (ImageButton) findViewById(R.id.prevCalButton);
  63.                 ll = (LinearLayout) findViewById(R.id.lineartasklayout);
  64.  
  65.                 dt = new Date();
  66.  
  67.                 date = dt.getDate();
  68.                 month = 1 + dt.getMonth();
  69.                 year = 1900 + dt.getYear();
  70.  
  71.                 totalDate = date + "-" + month + "-" + year;
  72.                 datetxt.setText(totalDate);
  73.  
  74.                 passTheDate(totalDate);
  75.  
  76.                 nextDate.setOnClickListener(new OnClickListener() {
  77.                         public void onClick(View args0) {
  78.                                 if (month == 1 || month == 3 || month == 5 || month == 7
  79.                                                 || month == 8 || month == 10 || month == 12) {
  80.                                         if (date < 31) {
  81.                                                 date++;
  82.                                         } else {
  83.                                                 date = 1;
  84.                                                 if (month < 12) {
  85.                                                         month++;
  86.                                                 } else {
  87.                                                         month = 1;
  88.                                                         year++;
  89.                                                 }
  90.                                         }
  91.                                 } else if (month == 4 || month == 6 || month == 9
  92.                                                 || month == 11) {
  93.                                         if (date < 30) {
  94.                                                 date = date + 1;
  95.                                         } else {
  96.                                                 date = 1;
  97.                                                 if (month < 12) {
  98.                                                         month++;
  99.                                                 } else {
  100.                                                         month = 1;
  101.                                                         year++;
  102.                                                 }
  103.                                         }
  104.                                 } else {
  105.                                         if (year % 4 == 0) {
  106.                                                 if (date < 29) {
  107.                                                         date++;
  108.                                                 } else {
  109.                                                         date = 1;
  110.                                                         if (month < 12) {
  111.                                                                 month++;
  112.                                                         } else {
  113.                                                                 month = 1;
  114.                                                                 year++;
  115.                                                         }
  116.                                                 }
  117.                                         } else {
  118.                                                 if (date < 28) {
  119.                                                         date++;
  120.                                                 } else {
  121.                                                         date = 1;
  122.                                                         if (month < 12) {
  123.                                                                 month++;
  124.                                                         } else {
  125.                                                                 month = 1;
  126.                                                                 year++;
  127.                                                         }
  128.                                                 }
  129.                                         }
  130.                                 }
  131.                                 totalDate = date + "-" + month + "-" + year;
  132.                                 datetxt.setText(totalDate);
  133.                                 passTheDate(totalDate);
  134.                         }
  135.                 });
  136.  
  137.                 previousDate.setOnClickListener(new OnClickListener() {
  138.                         public void onClick(View args0) {
  139.                                 if (month == 2 || month == 4 || month == 6 || month == 9
  140.                                                 || month == 11 || month == 1) {
  141.                                         if (date > 1) {
  142.                                                 date--;
  143.                                         } else {
  144.                                                 date = 31;
  145.                                                 if (month > 1) {
  146.                                                         month--;
  147.                                                 } else {
  148.                                                         month = 12;
  149.                                                         year--;
  150.                                                 }
  151.                                         }
  152.                                 } else if (month == 5 || month == 7 || month == 8
  153.                                                 || month == 10 || month == 12) {
  154.                                         if (date > 1) {
  155.                                                 date--;
  156.                                         } else {
  157.                                                 date = 30;
  158.                                                 if (month > 1) {
  159.                                                         month--;
  160.                                                 } else {
  161.                                                         month = 12;
  162.                                                         year--;
  163.                                                 }
  164.                                         }
  165.                                 } else {
  166.                                         if ((year - 1) % 4 != 0) {
  167.                                                 if (date > 1) {
  168.                                                         date--;
  169.                                                 } else {
  170.                                                         date = 28;
  171.                                                         if (month > 1) {
  172.                                                                 month--;
  173.                                                         } else {
  174.                                                                 month = 12;
  175.                                                                 year--;
  176.                                                         }
  177.                                                 }
  178.                                         } else {
  179.                                                 if (date > 1) {
  180.                                                         date--;
  181.                                                 } else {
  182.                                                         date = 29;
  183.                                                         if (month > 1) {
  184.                                                                 month--;
  185.                                                         } else {
  186.                                                                 month = 12;
  187.                                                                 year--;
  188.                                                         }
  189.                                                 }
  190.                                         }
  191.                                 }
  192.                                 totalDate = date + "-" + month + "-" + year;
  193.                                 datetxt.setText(totalDate);
  194.                                 passTheDate(totalDate);
  195.                         }
  196.                 });
  197.         }
  198.  
  199.         public void passTheDate(String myDate) {
  200.                 currentDate = myDate;
  201.                 URL url = null;
  202.                 try {
  203.                         url = new URL(
  204.                                         "C:/Documents and Settings/ayush/Desktop/GetItDone Dummy/working.xml");
  205.                         // url = new
  206.                         // URL("http://www.anddev.org/images/tut/basic/parsingxml/example.xml");
  207.                 } catch (MalformedURLException e1) {
  208.                         show = new AlertDialog.Builder(local).setTitle("welcome")
  209.                                         .setMessage(e1.getMessage()).show();
  210.                 }
  211.                 SAXParserFactory spf = SAXParserFactory.newInstance();
  212.                 SAXParser sp = null;
  213.                 XMLReader xr = null;
  214.  
  215.                 try {
  216.                         sp = spf.newSAXParser();
  217.                 } catch (ParserConfigurationException e) {
  218.                         show = new AlertDialog.Builder(local).setTitle("welcome")
  219.                                         .setMessage(e.getMessage()).show();
  220.                 } catch (SAXException e) {
  221.                         show = new AlertDialog.Builder(local).setTitle("welcome")
  222.                                         .setMessage(e.getMessage()).show();
  223.                 }
  224.  
  225.                 try {
  226.                         xr = sp.getXMLReader();
  227.                 } catch (SAXException e) {
  228.                         show = new AlertDialog.Builder(local).setTitle("welcome")
  229.                                         .setMessage(e.getMessage()).show();
  230.                 }
  231.  
  232.                 CalenderHandler calhldr = new CalenderHandler();
  233.                 // ExerciseHandler calhldr=new ExerciseHandler();
  234.  
  235.                 xr.setContentHandler(calhldr);
  236.  
  237.                 try {
  238.                         xr.parse(new InputSource(url.openStream()));
  239.  
  240.                 } catch (IOException e) {
  241.                         // show=new
  242.                         // AlertDialog.Builder(local).setTitle("welcome").setMessage(e.getMessage()).show();
  243.                 } catch (SAXException e) {
  244.                         show = new AlertDialog.Builder(local).setTitle("welcome")
  245.                                         .setMessage(e.getMessage()).show();
  246.                 }
  247.  
  248.                 /*CalenderDataParsed*/ cdp = calhldr.getParsedData();
  249.                 // ParsedData cdp= calhldr.getParsedData();
  250.                 int workCount;
  251.                 workCount = cdp.totalWorkCount();
  252.  
  253.                 myList = new String[workCount];
  254.                 String str = null;
  255.                 for (int i = 0; i < myList.length; i++) {
  256.                         try {
  257.                                 getOrient = getWindowManager().getDefaultDisplay();
  258.                                 if(getOrient.getWidth() <= getOrient.getHeight())
  259.                                 {
  260.                                         if(cdp.toString().length()<35)
  261.                                         {
  262.                                                 myList[i] = cdp.toString();
  263.                                         }
  264.                                         else
  265.                                         {
  266.                                                 myList[i]=cdp.toString().substring(0, 35)+"...";
  267.                                         }
  268.                                 }
  269.                                 else
  270.                                 {
  271.                                         if(cdp.toString().length()<52)
  272.                                         {
  273.                                                 myList[i] = cdp.toString();
  274.                                         }
  275.                                         else
  276.                                         {
  277.                                                 myList[i]=cdp.toString().substring(0, 52)+"...";
  278.                                         }
  279.                                 }
  280.                         } catch (Exception e) {
  281.                                 show = new AlertDialog.Builder(local).setTitle("welcome")
  282.                                                 .setMessage("hello  " + e.getMessage()).show();
  283.                         }
  284.                 }
  285.  
  286.                 // String[] myList = new String[]
  287.                 // {"Hello","Sapple","System","we ","gonna","take","over","apple","cmpny"};
  288.  
  289.                 timetasklist = new ListView(this);
  290.                 timetasklist.setAdapter(new ArrayAdapter<String>(this,
  291.                                 android.R.layout.simple_list_item_1,myList));
  292.                                
  293.                                         ll.addView(timetasklist);
  294.                                        
  295.                
  296.  
  297.                 timetasklist.setOnItemClickListener(new OnItemClickListener() {
  298.  
  299.                         public void onItemClick(AdapterView adapterView, View view,
  300.                                         int position, long id) {
  301. //                               SimpleAdapter adapter = (SimpleAdapter)
  302. //                               adapterView.getAdapter();
  303.  
  304. //                              show = new AlertDialog.Builder(local).setTitle("welcome")
  305. //                                              .setMessage("you have clicked on " + currentDate+"at the position "+position).show();
  306.                        
  307.                                 Intent myIntent = new Intent(view.getContext(), JobOption.class);
  308.                                 Bundle b=new Bundle();
  309.                                 b.putString("Date",currentDate);
  310.                                 b.putString("Time",cdp.extractedTime);
  311.                                 b.putString("Destination",cdp.extractedDescription);
  312.                                 b.putInt("TaskID", cdp.extractedTaskId);
  313.                                 myIntent.putExtras(b);
  314.                                 startActivityForResult(myIntent, 0);
  315.                         }
  316.                 });
  317.  
  318.         }
  319. }
Parsed in 0.064 seconds, using GeSHi 1.0.8.4

the second class is
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.example;
  2.  
  3. import org.xml.sax.Attributes;
  4. import org.xml.sax.SAXException;
  5. import org.xml.sax.helpers.DefaultHandler;
  6.  
  7. public class CalenderHandler extends DefaultHandler {
  8.         private boolean in_work = false;
  9.         private boolean in_time = false;
  10.         private boolean in_des = false;
  11.         private boolean in_root = false;
  12.         private boolean in_taskid = false;
  13.         private int totalworktags = 0;
  14.         private int taskid;
  15.  
  16.         private CalenderDataParsed parsdata = new CalenderDataParsed();
  17.  
  18.         public CalenderDataParsed getParsedData() {
  19.                 return this.parsdata;
  20.         }
  21.  
  22.         public void startDocument() throws SAXException {
  23.                 this.parsdata = new CalenderDataParsed();
  24.         }
  25.  
  26.         public void endDocument() throws SAXException {
  27.                 parsdata.setExtractedTotalWorkCount(totalworktags);
  28.         }
  29.  
  30.         public void startElement(String namespaceURI, String localName,
  31.  
  32.         String qName, Attributes atts) throws SAXException {
  33.                 if (localName.equals("root")) {
  34.                         this.in_root = true;
  35.                         totalworktags++;
  36.                 }
  37.  
  38.                 else if (localName.equals("work")) {
  39.  
  40.                         this.in_work = true;
  41.  
  42.                 } else if (localName.equals("taskid")) {
  43.                         this.in_taskid = true;
  44.                         String task_id = atts.getValue("taskid");
  45.                         taskid = Integer.parseInt(task_id);
  46.                         parsdata.setExtractedTaskId(taskid);
  47.                 } else if (localName.equals("time")) {
  48.  
  49.                         this.in_time = true;
  50.                         String attrValue = atts.getValue("time");
  51.  
  52.                         parsdata.setExtractedTime(attrValue);
  53.  
  54.                 } else if (localName.equals("description")) {
  55.  
  56.                         this.in_des = true;
  57.                         String attrValue = atts.getValue("description");
  58.                         parsdata.setExtractedDescription(attrValue);
  59.  
  60.                 }
  61.  
  62.         }
  63.  
  64.         public void endElement(String namespaceURI, String localName, String qName)
  65.  
  66.         throws SAXException {
  67.                 if (localName.equals("root")) {
  68.                         this.in_root = false;
  69.                 }
  70.  
  71.                 else if (localName.equals("work")) {
  72.  
  73.                         this.in_work = false;
  74.  
  75.                 }
  76.  
  77.                 else if (localName.equals("taskid")) {
  78.                         this.in_taskid = false;
  79.                 } else if (localName.equals("time")) {
  80.  
  81.                         this.in_time = false;
  82.  
  83.                 } else if (localName.equals("description")) {
  84.  
  85.                         this.in_des = false;
  86.  
  87.                 }
  88.  
  89.         }
  90.  
  91.         public void characters(char ch[], int start, int length) {
  92.  
  93.                 if (this.in_des) {
  94.  
  95.                         parsdata.setExtractedDescription(new String(ch, start, length));
  96.  
  97.                 }
  98.  
  99.         }
  100.  
  101. }
  102.  
Parsed in 0.043 seconds, using GeSHi 1.0.8.4


the third class contain getter and setter

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.example;
  2.  
  3. public class CalenderDataParsed {
  4.         public String extractedDescription;
  5.         public String extractedTime;
  6.         public int extractedTotalWorkCount ;
  7.         public int extractedTaskId;
  8.  
  9.         public int getExtractedTotalWorkCount() {
  10.                 return extractedTotalWorkCount;
  11.         }
  12.  
  13.         public void setExtractedTotalWorkCount(int extractedTotalWorkCount) {
  14.                 this.extractedTotalWorkCount = extractedTotalWorkCount;
  15.         }
  16.  
  17.         public String getExtractedDescription() {
  18.                 return extractedDescription;
  19.         }
  20.  
  21.         public void setExtractedDescription(String extractedDescription) {
  22.                 this.extractedDescription = extractedDescription;
  23.         }
  24.  
  25.         public String getExtractedTime() {
  26.                 return extractedTime;
  27.         }
  28.  
  29.         public void setExtractedTime(String extractedTime) {
  30.                 this.extractedTime = extractedTime;
  31.  
  32.         }
  33.  
  34.         public int getExtractedTaskId() {
  35.                 return extractedTaskId;
  36.         }
  37.  
  38.         public void setExtractedTaskId(int extractedTaskId) {
  39.                 this.extractedTaskId = extractedTaskId;
  40.         }
  41.  
  42.         public int totalWorkCount() {
  43.                 return this.extractedTotalWorkCount;
  44.         }
  45.  
  46.         public String toString() {
  47.  
  48.                 return this.extractedTime + "\n" + this.extractedDescription;
  49.  
  50.         }
  51.  
  52. }
  53.  
Parsed in 0.039 seconds, using GeSHi 1.0.8.4



i want to get the data of all the work tags which are present in this file.
ayush_garg
Once Poster
Once Poster
 
Posts: 1
Joined: Thu Aug 04, 2011 9:59 am

Top

Parsing XML from the Net - Using the SAXParser

Postby bharti » Wed Aug 17, 2011 8:13 am

Hello Plusminus,

I executed your program, but it is showing me the error "Error: At line 4, column 2: mismatched tag".
Kindly guide what to do. Example.xml file has each tag properly closed then what the reason could be of this error?

Thanks alot.
bharti
Once Poster
Once Poster
 
Posts: 1
Joined: Wed Aug 17, 2011 7:44 am

Re: Parsing XML from the Net - Using the SAXParser

Postby ignacioalvmar » Mon Aug 22, 2011 9:48 pm

Hi Plusminus,

I have been trying to use the saxp parser to display some xml that is the result of a query to a DB. I get the right result, but when I want to parse the xml and dump the content into a Text view the ParsedExampleDataSet returns an empty string. I have been trying to trace where the error is but it eludes me. So far I know the data is parsed correctly in the characters method, I managed to printed the content in the Log file. Could you guys help me figure out where my return string problem is?

My xml file is pretty basic, <body> blablablah </body>.

Here are the files:

Activity calling the HPP Post and displaying the result in the GUI
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.ignacio.BilingualSTT;
  2.  
  3. import java.io.BufferedInputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.net.URL;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. import javax.xml.parsers.SAXParser;
  11. import javax.xml.parsers.SAXParserFactory;
  12.  
  13. import android.util.Log;
  14.  
  15.  
  16. import org.apache.http.HttpResponse;
  17. import org.apache.http.NameValuePair;
  18. import org.apache.http.client.ClientProtocolException;
  19. import org.apache.http.client.HttpClient;
  20. import org.apache.http.client.entity.UrlEncodedFormEntity;
  21. import org.apache.http.client.methods.HttpPost;
  22. import org.apache.http.impl.client.DefaultHttpClient;
  23. import org.apache.http.message.BasicNameValuePair;
  24. import org.apache.http.util.ByteArrayBuffer;
  25. import org.xml.sax.InputSource;
  26. import org.xml.sax.XMLReader;
  27.  
  28. import android.app.Activity;
  29. import android.content.Intent;
  30. import android.os.Bundle;
  31. import android.view.View;
  32. import android.widget.TextView;
  33. import android.widget.Toast;
  34.  
  35. public class PostAndGet extends Activity {
  36.        
  37.         private static String Utterance = null;
  38.         TextView Title;
  39.         TextView Content;
  40.         private static final String TAG = "TextToSpeechDemo";
  41.         String text;
  42.  
  43.         @Override
  44.         public void onCreate(Bundle savedInstanceState) {
  45.                 super.onCreate(savedInstanceState);
  46.                 setContentView(R.layout.en_results);
  47.                 Title = (TextView)findViewById(R.id.A1_title);
  48.                 Content= (TextView) findViewById(R.id.A1_content);
  49.                 text = "";
  50.                
  51.                 Bundle b = this.getIntent().getExtras();
  52.                 if (b !=null){
  53.                         Utterance = b.getString("query");
  54.                 }
  55.                 postData(Utterance);
  56.         }
  57.        
  58.         /**
  59.      * Handle the action of the Back button
  60.      */
  61.    
  62.     public void sendback(View v)
  63.     {
  64.         Intent Sendback=new Intent(this, EnglishRecognizer.class);
  65.                 startActivity(Sendback);
  66.     }
  67.    
  68.     /**
  69.      * Start HTTP Post call
  70.      */
  71.  
  72.     public void postData(String Utterance){
  73.                 // Create a new HttpClient and Post Header
  74.                 HttpClient httpclient = new DefaultHttpClient();
  75.                 HttpPost httppost = new HttpPost("http://hcc.cs.clemson.edu/~ignm/ignacio/Android_QueryResults.php");  
  76.  
  77.                 try {
  78.                         // Add data to the HTTP Request data has to be named query since the PHP page in the server is expecting that name to run the query on the DB
  79.                         List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);  
  80.                         nameValuePairs.add(new BasicNameValuePair("query", Utterance));
  81.                         httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
  82.                        
  83.                         // Execute HTTP Post Request and retrieve answer from PHP side.
  84.                         HttpResponse response = httpclient.execute(httppost);
  85.                         InputStream is = response.getEntity().getContent();
  86.                         BufferedInputStream bis = new BufferedInputStream(is);
  87.                         ByteArrayBuffer baf = new ByteArrayBuffer(20);
  88.                         int current = 0;
  89.  
  90.                         while((current = bis.read()) != -1){
  91.                                 baf.append((byte)current);
  92.                         }  
  93.  
  94.                         // Convert the Bytes read to a String and display it in the Title Container
  95.                         text = new String(baf.toByteArray());
  96.                         Title.setText(text);
  97.                        
  98.                         //Send Text to
  99.                         parseXML (text);
  100.                        
  101.                
  102.                 } catch (ClientProtocolException e) {
  103.                         // TODO Auto-generated catch block
  104.                         Toast.makeText(this, "Error in the connection", Toast.LENGTH_SHORT).show();
  105.                 } catch (IOException e) {
  106.                         // TODO Auto-generated catch block
  107.                         Toast.makeText(this,"IO Exception error", Toast.LENGTH_SHORT).show();
  108.                 }
  109.         }
  110.    
  111.    
  112.     public void parseXML (String text){
  113.        
  114.         String AnswerExt = text;
  115.        
  116.         try {
  117.                 /* Create a URL we want to load some xml-data from. */
  118.                 URL url = new URL("http://hcc.cs.clemson.edu/~ignm/ignacio/"+AnswerExt.toString());
  119.                
  120.                 Log.i(TAG, url.toString());
  121.                
  122.                 /* Get a SAXParser from the SAXPArserFactory. */
  123.                 SAXParserFactory spf = SAXParserFactory.newInstance();
  124.                 SAXParser sp = spf.newSAXParser();
  125.          
  126.                 /* Get the XMLReader of the SAXParser we created. */
  127.                 XMLReader xr = sp.getXMLReader();
  128.                 /* Create a new ContentHandler and apply it to the XML-Reader*/
  129.                 ExampleHandler myExampleHandler = new ExampleHandler();
  130.                 xr.setContentHandler(myExampleHandler);
  131.                
  132.                 /* Parse the xml-data from our URL. */
  133.                 xr.parse(new InputSource(url.openStream()));
  134.                 /* Parsing has finished. */
  135.          
  136.                 /* Our ExampleHandler now provides the parsed data to us. */
  137.                 ParsedExampleDataSet parsedExampleDataSet = myExampleHandler.getParsedData();
  138.        
  139.                
  140.                 /* Set the result to be displayed in our GUI. */
  141.                 Content.setText(parsedExampleDataSet.getExtractedString());
  142.                
  143.                                
  144.         } catch (Exception e) {
  145.                  /* Display any Error to the GUI. */
  146.                  Content.setText("Error: " + e.getMessage());
  147.                  Log.e(TAG, "QueryError", e);
  148.         }
  149.     }
  150.  
  151. }
Parsed in 0.055 seconds, using GeSHi 1.0.8.4


Example Handler modified to fit the parsing of my xml.
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.ignacio.BilingualSTT;
  2.  
  3. import org.xml.sax.Attributes;
  4. import org.xml.sax.SAXException;
  5. import org.xml.sax.helpers.DefaultHandler;
  6.  
  7. import android.content.Intent;
  8. import android.os.Bundle;
  9. import android.util.Log;
  10.  
  11.  
  12. public class ExampleHandler extends DefaultHandler{
  13.  
  14.         // ===========================================================
  15.         // Fields
  16.         // ===========================================================
  17.        
  18.         private boolean bodytag = false;
  19.         private static final String TAG = "TextToSpeechDemo";
  20.        
  21.         public ParsedExampleDataSet myParsedExampleDataSet = new ParsedExampleDataSet();
  22.         public String myReturnString = null;
  23.  
  24.         // ===========================================================
  25.         // Getter & Setter
  26.         // ===========================================================
  27.  
  28.         public ParsedExampleDataSet getParsedData() {  
  29.                 return this.myParsedExampleDataSet;
  30.         }
  31.  
  32.         // ===========================================================
  33.         // Methods
  34.         // ===========================================================
  35.         @Override
  36.         public void startDocument() throws SAXException {
  37.                 this.myParsedExampleDataSet = new ParsedExampleDataSet();
  38.         }
  39.  
  40.         @Override
  41.         public void endDocument() throws SAXException {
  42.                 // Nothing to do
  43.         }
  44.  
  45.         /** Gets be called on opening tags like:
  46.          * <tag>
  47.          * Can provide attribute(s), when xml was like:
  48.          * <tag attribute="attributeValue">*/
  49.         @Override
  50.         public void startElement(String namespaceURI, String localName,
  51.                         String qName, Attributes atts) throws SAXException {
  52.                 if (localName.equals("body")) {
  53.                         this.bodytag = true;
  54.                 }
  55.         }
  56.        
  57.         /** Gets be called on closing tags like:
  58.          * </tag> */
  59.         @Override
  60.         public void endElement(String namespaceURI, String localName, String qName)
  61.                         throws SAXException {
  62.                 if (localName.equals("body")) {
  63.                         this.bodytag = false;
  64.                 }
  65.         }
  66.        
  67.         /** Gets be called on the following structure:
  68.          * <tag>characters</tag> */
  69.         @Override
  70.     public void characters(char ch[], int start, int length) {
  71.                 if(this.bodytag){
  72.                 myParsedExampleDataSet.setExtractedString(new String(ch, start, length));
  73.                 //String Temp = myParsedExampleDataSet.getExtractedString();
  74.                 //Log.i(TAG, Temp);      
  75.         }
  76.    }
  77.  
  78. }
Parsed in 0.046 seconds, using GeSHi 1.0.8.4


ParsedExampleDataSet:

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.ignacio.BilingualSTT;
  2.  
  3. public class ParsedExampleDataSet {
  4.         private String extractedString = "No content yet";
  5.  
  6.         public String getExtractedString() {
  7.                 return extractedString;
  8.         }
  9.         public void setExtractedString(String extractedString) {
  10.                 this.extractedString = extractedString;
  11.         }      
  12.         public String toString(){
  13.                 return this.extractedString;
  14.         }
  15. }
Parsed in 0.038 seconds, using GeSHi 1.0.8.4


Thank you so much!!! :)
ignacioalvmar
Once Poster
Once Poster
 
Posts: 1
Joined: Mon Aug 22, 2011 9:31 pm

Re: Parsing XML from the Net - Using the SAXParser

Postby harish » Thu Aug 25, 2011 12:49 pm

HI ,
Can anyone send me the how can we generate spinner using saxparser .
harish
Once Poster
Once Poster
 
Posts: 1
Joined: Thu Aug 25, 2011 12:45 pm

Re: Parsing XML from the Net - Using the SAXParser

Postby morefeeus » Sun Oct 02, 2011 6:23 pm

hi there,

Sorry for what may seem like a noob item with this... I've got this code running in eclipse on the emulator...
But the String "anddev.org rulez =)" just won't appear...
I get:-
ExtractedString =
ExtractedInt = 1337

I setup logging to check the string...

10-02 19:29:39.022: INFO/URLread Log(424): String = >
10-02 19:29:39.022: INFO/URLread Log(424): <
10-02 19:29:39.033: INFO/URLread Log(424): String = > anddev.org rulez =)<
10-02 19:29:39.033: INFO/URLread Log(424): String = >
10-02 19:29:39.033: INFO/URLread Log(424): <
10-02 19:29:39.042: INFO/URLread Log(424): String = > <
10-02 19:29:39.042: INFO/URLread Log(424): mytag false

I see that this is because the setStringExctract is running 4 time because of the source xml...
Can someone please explain why? As it's not obvious to me.

Any help with this would be much appreciated.

Thanks
Morf
morefeeus
Freshman
Freshman
 
Posts: 2
Joined: Sun Oct 02, 2011 6:09 pm

Re: Parsing XML from the Net - Using the SAXParser

Postby jordan » Mon Oct 03, 2011 4:49 pm

Hello I have tried to run this code (just like yours) but I get an error that shows the web link. I'm new to Android so excuse any obvious mistakes:

XmlParserActivity:
Code: Select all
package com.example.xmlParser;

import java.net.URL;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class XmlParserActivity extends Activity {
   
   private final String MY_DEBUG_TAG = "WeatherForcaster";
   
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
            super.onCreate(icicle);

            /* Create a new TextView to display the parsingResult later. */
            TextView tv = new TextView(this);
            try {
                    /* Create a URL we want to load some XML-data from. */
                    URL url = new URL("http://www.miamidade.gov/transit/mobile/xml/trainstations/?stationid=ovt");

                    /* Get a SAXParser from the SAXPArserFactory. */
                    SAXParserFactory spf = SAXParserFactory.newInstance();
                    SAXParser sp = spf.newSAXParser();

                    /* Get the XMLReader of the SAXParser we created. */
                    XMLReader xr = sp.getXMLReader();
                    /* Create a new ContentHandler and apply it to the XML-Reader*/
                    ExampleHandler myExampleHandler = new ExampleHandler();
                    xr.setContentHandler(myExampleHandler);
                   
                    /* Parse the XML-data from our URL. */
                    xr.parse(new InputSource(url.openStream()));
                    /* Parsing has finished. */

                    /* Our ExampleHandler now provides the parsed data to us. */
                    ParsedExampleDataSet parsedExampleDataSet = myExampleHandler.getParsedData();

                    /* Set the result to be displayed in our GUI. */
                    tv.setText(parsedExampleDataSet.toString());
                   
            } catch (Exception e) {
                    /* Display any Error to the GUI. */
                    tv.setText("Error: " + e.getMessage());
                    Log.e(MY_DEBUG_TAG, "WeatherQueryError", e);
            }
            /* Display the TextView. */
            this.setContentView(tv);
    }
}


ExampleHandler:

Code: Select all
package com.example.xmlParser;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class ExampleHandler extends DefaultHandler{
   // ===========================================================
    // Fields
    // ===========================================================
   
    private boolean in_StationIDshow = false;
    private boolean in_SB_OrderNum = false;
   
    private ParsedExampleDataSet myParsedExampleDataSet = new ParsedExampleDataSet();

    // ===========================================================
    // Getter & Setter
    // ===========================================================

    public ParsedExampleDataSet getParsedData() {
            return this.myParsedExampleDataSet;
    }

    // ===========================================================
    // Methods
    // ===========================================================
    @Override
    public void startDocument() throws SAXException {
            this.myParsedExampleDataSet = new ParsedExampleDataSet();
    }

    @Override
    public void endDocument() throws SAXException {
            // Nothing to do
    }

    /** Gets be called on opening tags like:
     * <tag>
     * Can provide attribute(s), when XML was like:
     * <tag attribute="attributeValue">*/
    @Override
    public void startElement(String namespaceURI, String localName,
                    String qName, Attributes atts) throws SAXException {
            if (localName.equals("StationIDshow")) {
                    this.in_StationIDshow = true;
            }else if (localName.equals("SB_OrderNum ")) {
                    this.in_SB_OrderNum  = true;
            }
    }
   
    /** Gets be called on closing tags like:
     * </tag> */
    @Override
    public void endElement(String namespaceURI, String localName, String qName)
                    throws SAXException {
            if (localName.equals("StationIDshow")) {
                    this.in_StationIDshow = false;
            }else if (localName.equals("SB_OrderNum ")) {
                    this.in_SB_OrderNum  = false;
            }
    }
   
    /** Gets be called on the following structure:
     * <tag>characters</tag> */
    @Override
public void characters(char ch[], int start, int length) {
            if(this.in_StationIDshow){
            myParsedExampleDataSet.setStationIDshow(new String(ch, start, length));
            }
            if(this.in_SB_OrderNum){
                myParsedExampleDataSet.setSB_OrderNum(new String(ch, start, length));
            }
    }
}



ParsedExampleDataSet
Code: Select all
package com.example.xmlParser;

public class ParsedExampleDataSet {
   private String StationIDshow = null;
    private String SB_OrderNum = null;

    public String getStationIDshow() {
            return StationIDshow;
    }
    public void setStationIDshow(String extractedString) {
            this.StationIDshow = extractedString;
    }

    public String getSB_OrderNum() {
            return SB_OrderNum;
    }
    public void setSB_OrderNum(String extractedString) {
            this.SB_OrderNum = extractedString;
    }
   
    public String toString(){
            return "StationIDshow = " + this.StationIDshow
                            + "nSB_OrderNum = " + this.SB_OrderNum;
    }
}
jordan
Once Poster
Once Poster
 
Posts: 1
Joined: Mon Oct 03, 2011 4:22 pm

Top

Re: Parsing XML from the Net - Using the SAXParser

Postby morefeeus » Mon Oct 03, 2011 9:10 pm

jordan wrote:Hello I have tried to run this code (just like yours) but I get an error that shows the web link. I'm new to Android so excuse any obvious mistakes:

XmlParserActivity:
Code: Select all
package com.example.xmlParser;

import java.net.URL;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

public class XmlParserActivity extends Activity {
   
   private final String MY_DEBUG_TAG = "WeatherForcaster";
   
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
            super.onCreate(icicle);

            /* Create a new TextView to display the parsingResult later. */
            TextView tv = new TextView(this);
            try {
                    /* Create a URL we want to load some XML-data from. */
                    URL url = new URL("http://www.miamidade.gov/transit/mobile/xml/trainstations/?stationid=ovt");

                    /* Get a SAXParser from the SAXPArserFactory. */
                    SAXParserFactory spf = SAXParserFactory.newInstance();
                    SAXParser sp = spf.newSAXParser();

                    /* Get the XMLReader of the SAXParser we created. */
                    XMLReader xr = sp.getXMLReader();
                    /* Create a new ContentHandler and apply it to the XML-Reader*/
                    ExampleHandler myExampleHandler = new ExampleHandler();
                    xr.setContentHandler(myExampleHandler);
                   
                    /* Parse the XML-data from our URL. */
                    xr.parse(new InputSource(url.openStream()));
                    /* Parsing has finished. */

                    /* Our ExampleHandler now provides the parsed data to us. */
                    ParsedExampleDataSet parsedExampleDataSet = myExampleHandler.getParsedData();

                    /* Set the result to be displayed in our GUI. */
                    tv.setText(parsedExampleDataSet.toString());
                   
            } catch (Exception e) {
                    /* Display any Error to the GUI. */
                    tv.setText("Error: " + e.getMessage());
                    Log.e(MY_DEBUG_TAG, "WeatherQueryError", e);
            }
            /* Display the TextView. */
            this.setContentView(tv);
    }
}


ExampleHandler:

Code: Select all
package com.example.xmlParser;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class ExampleHandler extends DefaultHandler{
   // ===========================================================
    // Fields
    // ===========================================================
   
    private boolean in_StationIDshow = false;
    private boolean in_SB_OrderNum = false;
   
    private ParsedExampleDataSet myParsedExampleDataSet = new ParsedExampleDataSet();

    // ===========================================================
    // Getter & Setter
    // ===========================================================

    public ParsedExampleDataSet getParsedData() {
            return this.myParsedExampleDataSet;
    }

    // ===========================================================
    // Methods
    // ===========================================================
    @Override
    public void startDocument() throws SAXException {
            this.myParsedExampleDataSet = new ParsedExampleDataSet();
    }

    @Override
    public void endDocument() throws SAXException {
            // Nothing to do
    }

    /** Gets be called on opening tags like:
     * <tag>
     * Can provide attribute(s), when XML was like:
     * <tag attribute="attributeValue">*/
    @Override
    public void startElement(String namespaceURI, String localName,
                    String qName, Attributes atts) throws SAXException {
            if (localName.equals("StationIDshow")) {
                    this.in_StationIDshow = true;
            }else if (localName.equals("SB_OrderNum ")) {
                    this.in_SB_OrderNum  = true;
            }
    }
   
    /** Gets be called on closing tags like:
     * </tag> */
    @Override
    public void endElement(String namespaceURI, String localName, String qName)
                    throws SAXException {
            if (localName.equals("StationIDshow")) {
                    this.in_StationIDshow = false;
            }else if (localName.equals("SB_OrderNum ")) {
                    this.in_SB_OrderNum  = false;
            }
    }
   
    /** Gets be called on the following structure:
     * <tag>characters</tag> */
    @Override
public void characters(char ch[], int start, int length) {
            if(this.in_StationIDshow){
            myParsedExampleDataSet.setStationIDshow(new String(ch, start, length));
            }
            if(this.in_SB_OrderNum){
                myParsedExampleDataSet.setSB_OrderNum(new String(ch, start, length));
            }
    }
}



ParsedExampleDataSet
Code: Select all
package com.example.xmlParser;

public class ParsedExampleDataSet {
   private String StationIDshow = null;
    private String SB_OrderNum = null;

    public String getStationIDshow() {
            return StationIDshow;
    }
    public void setStationIDshow(String extractedString) {
            this.StationIDshow = extractedString;
    }

    public String getSB_OrderNum() {
            return SB_OrderNum;
    }
    public void setSB_OrderNum(String extractedString) {
            this.SB_OrderNum = extractedString;
    }
   
    public String toString(){
            return "StationIDshow = " + this.StationIDshow
                            + "nSB_OrderNum = " + this.SB_OrderNum;
    }
}


Hi jordan,

My first question is did you get the original code working before you started customising it for your new URL?
If you did and got the same blank string, then your code above is further down the road than mine.
If you didn't I would suggest you use the Log function to try and see what data is being pulled from the URL.

public static final String DEBUG_TAG = "URLread Log";

Place this
Log.i(DEBUG_TAG, "String = >" + extractedString + "<");

The trace appears in the LogCat tab.
where you want to see what is happening. Or use the Breakpoint functions in Eclipse.

morf
morefeeus
Freshman
Freshman
 
Posts: 2
Joined: Sun Oct 02, 2011 6:09 pm

Re: Parsing XML from the Net - Using the SAXParser

Postby NunoMendes » Sun Oct 09, 2011 12:19 pm

ajaypatelaj wrote:can any one help me.. why i am getting error... " THe application pasexml stopped unexpectedly " ...??

i write same above 3 file....


Good morning.

This same thing hapens to me.
I've already added the "uses INTERNET" to the manifest.
What am I missing?

Thanks in advance

P.S: I'm new to android
NunoMendes
Freshman
Freshman
 
Posts: 2
Joined: Fri Oct 07, 2011 6:04 pm

Re: Parsing XML from the Net - Using the SAXParser

Postby mehulsid » Mon Oct 10, 2011 12:29 pm

shows this error when i run on ma simulator.

Error: www.anddev.org
mehulsid
Once Poster
Once Poster
 
Posts: 1
Joined: Mon Oct 10, 2011 12:23 pm

Re: Parsing XML from the Net - Using the SAXParser

Postby NunoMendes » Mon Oct 10, 2011 8:44 pm

Hi there

I continue having the fatal error.
debugging shows:

[/syntax]java.lang.ClassNotFoundException: org.anddev.android.parsingxml.ParsingxmlActivity in loader dalvik.system.PathClassLoader[/data/app/org.anddev.android.parsingxml-1.apk]


Some help please.

Thanks
NunoMendes
Freshman
Freshman
 
Posts: 2
Joined: Fri Oct 07, 2011 6:04 pm

Re: Parsing XML from the Net - Using the SAXParser

Postby ScaredyCat » Fri Dec 02, 2011 12:29 am

Your problem lies in the code snippet below.

ignacioalvmar wrote: @Override
public void characters(char ch[], int start, int length) {
if(this.bodytag){
myParsedExampleDataSet.setExtractedString(new String(ch, start, length));
//String Temp = myParsedExampleDataSet.getExtractedString();
//Log.i(TAG, Temp);
}


The original code (page one of this thread) is wrong and as a consequence, so is yours simply because the characters function can be called multiple times even for a single parsed string. So for example it might take 3 calls to characters to read the string 'hello world' and if the last time it gets called and ch happens to be "" (nothing) then that's what your final string will be.

You need to append the extracted string in the characters function until your tag ends eg

Code: Select all

public void characters(char ch[], int start, int length) {
       tBuffer = tBuffer + new String(ch,start,length);
}


(stringbuilder is probably better and more efficient) then do what you want with it, eg store it and then reinitialise the buffer (tBuffer) to nothing.

Hope it helps

SC
ScaredyCat
Freshman
Freshman
 
Posts: 2
Joined: Fri Dec 02, 2011 12:14 am

Re: Parsing XML from the Net - Using the SAXParser

Postby dualcnhq » Tue Dec 06, 2011 1:00 pm

how about having this xml format, how can i parse it?


<?xml version="1.0" encoding="UTF-8" ?>

<sync>
<filestructure>
<folder name='name'>
<folder description='folder name' />
<file>
<name></name>
<type></type>
<link></link>
<size></size>
<version></version>
</file>
<file>
<name></name>
<type></type>
<link></link>
<size></size>
<version></version>
</file>
<folder name='name'>
<folder description='folder name' />
<file>
<name></name>
<type></type>
<link></link>
<size></size>
<version></version>
</file>
<folder name='name'>
<folder description='folder name' />
<file>
<name></name>
<type></type>
<link></link>
<size></size>
<version></version>
</file>
</folder>
</folder>
</folder>
</filestructure>

<miscfiles>
<folder name='name'>
<file>
<name></name>
<type></type>
<link></link>
<size></size>
<version></version>
</file>
</folder>
</miscfiles>

</sync>


looking forward for your reply.
dualcnhq
Freshman
Freshman
 
Posts: 7
Joined: Wed Nov 16, 2011 9:55 am

Re: Parsing XML from the Net - Using the SAXParser

Postby ScaredyCat » Tue Dec 06, 2011 5:58 pm

dualcnhq wrote:how about having this xml format, how can i parse it?


<?xml version="1.0" encoding="UTF-8" ?>

<sync>
<filestructure>
<folder name='name'>
<folder description='folder name' />
<file>
<name></name>
<type></type>
<link></link>
<size></size>
<version></version>
</file>
<file>
<name></name>
<type></type>
<link></link>
<size></size>
<version></version>
</file>
<folder name='name'>
<folder description='folder name' />
<file>
<name></name>
<type></type>
<link></link>
<size></size>
<version></version>
</file>


Aside from the fact that the XML is very poorly constructed in the first place, why have <folder name= and then a folder description= when <foldername="some name" description="some description"> would be far more apprpriate? And assuming someone else is to blame for it and you just have to pick up the pieces, the startElement function passes the Attributes so to get those for an element just get the value, for example (in the startElement function)

Code: Select all
        if(localName.equals("folder")) {
            String filderName = atts.getValue("name");
        }


You're going to need to store the data in an array because there are a lot of fields to keep track of and they are repeated for each file. You could create a class of MyFile and make an array of that, eg

Code: Select all

public class MyFile {

    public String name = "";
    public String description = "";
                etc
                  .
                  .
}



and build an array of them for your files..

Code: Select all
public ArrayList<MyFile>    mystuff  = new ArrayList<MyFile>();



you can then populate each element as required

Code: Select all

       MyType tmpStuff = new MyType();

      tmpStuff.name = "name of this file";
      tmpStuff.description = "some description";

      mystuff.add( tmpStuff );



You'll need to keep a counter for each level you go down and up, just have a folderDepth counter that's incremented in startElement and decremented in endElement, when it hits zero again you know you're taking about a different section.

Basically you need to get all the useful information for one file and add it the the array, then move to the next one.


HTH

ScaredyCat
ScaredyCat
Freshman
Freshman
 
Posts: 2
Joined: Fri Dec 02, 2011 12:14 am

Re: Parsing XML from the Net - Using the SAXParser

Postby dualcnhq » Wed Dec 07, 2011 1:44 am

thanks ScaredyCat for your reply, how about having this xml format:

Code: Select all
<sync>
    <structure>
        <folder name = 'name' description = 'description'>
            <file>
                <name>
                <type>
                <link>
                <uploader>
                <thumbnail>
                <filedescription>
                <size>
                <version>
                <created>
                <modified>
                <keywords>
          </file>
          <folder name = 'name' description = 'description'>
            <file>
                <name>
                <type>
                <link>
                <uploader>
                <thumbnail>
                <filedescription>
                <size>
                <version>
                <created>
                <modified>
                <keywords>
           </file>
           <folder name = 'name' description = 'description'>
             <file>
                <name>
                <type>
                <link>
                <uploader>
                <thumbnail>
                <filedescription>
                <size>
                <version>
                <created>
                <modified>
                <keywords>
            </file>
           </folder>
         </folder>

       </folder>
    </structure>

    <miscfiles>
          <folder>
                <file>
                   <name>
                   <type>
                   <link>
                   <uploader>
                   <thumbnail>
                   <description>
                   <size>
                   <version>
                  <created>
                  <modified>
                  <keywords>
               </file>
          </folder>
    </miscfiles>

    <details>
         <abc> </abc>
         <def> </def>
         <ghi> </ghi>
         <jkl> </jkl>
    </details>

</sync>



basically there are folders with a sub folder like Windows explorer. you can save a file or make a folder inside that folder and another folder. i'm really lost thinking for a solution for this, i'm reading the article about xml parsing at the ibmdeveloperworks site but i'm still lost there. hope you can help me or someone can help me.

thanks again.
dualcnhq
Freshman
Freshman
 
Posts: 7
Joined: Wed Nov 16, 2011 9:55 am

Re: Parsing XML from the Net - Using the SAXParser

Postby dualcnhq » Wed Dec 07, 2011 3:19 am

here's a better format i guess with values:

Code: Select all
<?xml version="1.0" encoding="UTF-8" ?>

<SyncLoginResponse>
    <FileStructure>
        <folder name = 'name' description = 'description'>
            <file>
                <name>doc</name>
                <type>pdf</type>
                <link>blahblah</link>
                <uploader>blah</uploader>
                <thumbnail>blahhhhhh</thumbnail>
                <filedescription>bbbbbllllllla</filedescription>
                <size>123</size>
                <version>1.0</version>
                <datecreated>2011-11-18 09:52:42</datecreated>
                <datemodified>2011-11-20 09:52:42</datemodified>
                <keywords>key1,key2</keywords>
            </file>
       <folder name = 'namee' description = 'descriptionn'>
         <file>
            <name>doccc</name>
            <type>ppt</type>
            <link>blahblahaqq</link>
            <uploader>qqblah</uploader>
            <thumbnail>qqblahhhhhh</thumbnail>
            <filedescription>qqbbbbbllllllla</filedescription>
            <size>1234</size>
            <version>2.0</version>
            <datecreated>2011-11-19 09:52:42</datecreated>
            <datemodified>2011-11-29 09:52:42</datemodified>
            <keywords>key1,key3</keywords>
         </file>
      <folder name = 'namee' description = 'descriptionn'>
         <file>
            <name>doccc</name>
            <type>ppt</type>
            <link>blahblahaqq</link>
            <uploader>qqblah</uploader>
            <thumbnail>qqblahhhhhh</thumbnail>
            <filedescription>qqbbbbbllllllla</filedescription>
            <size>1234</size>
            <version>2.0</version>
            <datecreated>2011-11-19 09:52:42</datecreated>
            <datemodified>2011-11-29 09:52:42</datemodified>
            <keywords>key1,key3</keywords>
         </file>
      </folder>
   </folder>
  </folder>
      
   <folder name = 'namee' description = 'descriptionn'>
    <file>
      <name>doccc</name>
      <type>ppt</type>
      <link>blahblahaqq</link>
      <uploader>qqblah</uploader>
      <thumbnail>qqblahhhhhh</thumbnail>
      <filedescription>qqbbbbbllllllla</filedescription>
      <size>1234</size>
      <version>2.0</version>
      <datecreated>2011-11-19 09:52:42</datecreated>
      <datemodified>2011-11-29 09:52:42</datemodified>
      <keywords>key1,key3</keywords>
    </file>
   </folder>
  </FileStructure>

  <OtherFiles>
     <OtherPdf>
      <file>
           <name>doc2</name>
           <type>pdf</type>
           <link>blahblaaah</link>
           <uploader>blaaah</uploader>
           <thumbnail>blaahh</thumbnail>
           <filedescription>bbbbblaa</filedescription>
           <size>125</size>
           <version>3.0</version>
           <datecreated>2011-11-28 09:52:42</datecreated>
           <datemodified>2011-11-30 09:52:42</datemodified>
           <keywords>key4,key2</keywords>
    </file>
   </OtherPdf>
       
   <OtherPowerpoint>
        <file>
           <name>doc2</name>
           <type>pdf</type>
           <link>blahblaaah</link>
           <uploader>blaaah</uploader>
           <thumbnail>blaahh</thumbnail>
           <filedescription>bbbbblaa</filedescription>
           <size>125</size>
           <version>3.0</version>
           <datecreated>2011-11-28 09:52:42</datecreated>
           <datemodified>2011-11-30 09:52:42</datemodified>
           <keywords>key4,key2</keywords>
    </file>
   </OtherPowerpoint> 
       
   <OtherVideo>
    <file>
           <name>doc2</name>
           <type>pdf</type>
           <link>blahblaaah</link>
           <uploader>blaaah</uploader>
           <thumbnail>blaahh</thumbnail>
           <filedescription>bbbbblaa</filedescription>
           <size>125</size>
           <version>3.0</version>
           <datecreated>2011-11-28 09:52:42</datecreated>
           <datemodified>2011-11-30 09:52:42</datemodified>
           <keywords>key4,key2</keywords>
    </file>
   </OtherVideo>
       
  </OtherFiles>

   <Details>
      <userid>3</userid>
      <userfirstname>mee</userfirstname>
      <userlastname>deee</userlastname>
      <companyname>company1</companyname>
   </Details>
   
   
</SyncLoginResponse>

dualcnhq
Freshman
Freshman
 
Posts: 7
Joined: Wed Nov 16, 2011 9:55 am

Top
PreviousNext

Return to Novice Tutorials

Who is online

Users browsing this forum: No registered users and 6 guests