Using XmlResourceParser to Parse Custom Compiled XML

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

Using XmlResourceParser to Parse Custom Compiled XML

Postby XCaffeinated » Tue Dec 01, 2009 10:13 am

[align=center]Using XmlResourceParser to Parse Custom Compiled XML[/align]
[align=center](In the interests of consistency and clarity I'm using plusminus' tutorial format.)[/align]

What you learn: You will learn how to create and parse custom compiled XML files.

:?: Problems/Questions: Just ask...

Difficulty: 1 of 5 :)

What it will look like:
[align=center]Image[/align]

Tested on Android 1.1, 2.0, emulator only.

Description:
In this tutorial we are going to create and parse custom compiled XML files, including resource references. This will help you avoid hard coding data in your .java files, while still allowing fast access via Android's built in compiled XML parser, XmlResourceParser.

1.) We need some resources:

In your res/xml directory (create an xml folder in /res if it's not already there), create a file named test.xml, and add:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <resources>
  4.  
  5.         <pictag id="@drawable/my_pic1" mystr="Picture 1" myint="33" />
  6.  
  7.         <pictag id="@drawable/my_pic2" mystr="Picture 2" myint="44" />
  8.  
  9.         <artag id="@array/my_array" mystr="My integer array" myfloat="1.234" />
  10.  
  11.         <plaintag>42</plaintag>
  12.  
  13. </resources>
Parsed in 0.002 seconds, using GeSHi 1.0.8.4


In your res/drawable directory add two .png images (of your choice), named my_pic1.png and my_pic2.png.

In your res/values directory create a file named arrays.xml, and add:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <resources>
  4.  
  5.         <integer-array name="my_array">
  6.  
  7.                 <item>1</item>
  8.  
  9.                 <item>2</item>
  10.  
  11.         </integer-array>
  12.  
  13. </resources>
Parsed in 0.001 seconds, using GeSHi 1.0.8.4


We don't actually use the data in the array or the images for anything, we just need something we can reference from within test.xml.

These XML files will be automatically compiled for you by the Android resource compiler (aapt) when you build your project.

2.) I won't cover the basics of pull parsing as it is quite similar to SAX parsing (there is a nice tutorial here). The format of a pull parser is:

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {
  2.  
  3.         if (xpp.getEventType() == XmlPullParser.START_TAG) {
  4.  
  5.                 ; //Do stuff with START_TAG
  6.  
  7.         } else if (xpp.getEventType() == XmlPullParser.END_TAG) {
  8.  
  9.                 ; //Do stuff with END_TAG
  10.  
  11.         } else if (xpp.getEventType() == XmlPullParser.TEXT) {
  12.  
  13.                 ; //Do stuff with TEXT
  14.  
  15.         }
  16.  
  17.         xpp.next();
  18.  
  19. }
Parsed in 0.030 seconds, using GeSHi 1.0.8.4


3.) In order to display our XML data, we will make an instance of TextView, and accumulate data as it is parsed into one big string using TextView's .append() method. This isn't very OO but it's easy to understand.

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. // Create a new TextView that we can accumulate and display our parsed data to.
  2.  
  3. TextView tv = new TextView(this);
  4.  
  5. tv.setText("");
Parsed in 0.032 seconds, using GeSHi 1.0.8.4


Android has its own XML pull parser, XmlResourceParser, specifically tailored to efficiently parse its internal compiled XML format. To use this parser, we create an instance and pass it our data file resource, R.xml.test:

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. XmlResourceParser xrp = this.getResources().getXml(R.xml.test);
Parsed in 0.034 seconds, using GeSHi 1.0.8.4


As an aside, if you'd like to parse non-compiled resources, such as those from the net, you should probably use SAX (for speed) or DOM (for versatility) instead. The Android pull parser is specifically geared to working well on compiled XML.

Most of our work will be done in the START_TAG block of our parser. In this block we will check each tag, look at each attribute of that tag, and retrieve the attribute's value in a suitable format. For example, for our XML tag:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <pictag  id="@drawable/my_pic1" mystr="Picture 1" myint="33" />
Parsed in 0.001 seconds, using GeSHi 1.0.8.4


We will check to see if the tag name is pictag. If it is, we will look at the id tag and get its value as a resource id, look at the mystr tag and get its value as a string, and finally look at the myint tag and get its value as an integer. Values will be accumulated to our TextView as we go:

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. String s = xrp.getName();
  2.  
  3. if (s.equals("pictag")) {
  4.  
  5.         // Get the resource id; this will be retrieved as a resolved hex value.
  6.  
  7.         int resid = xrp.getAttributeResourceValue(null, "id", 0);
  8.  
  9.         tv.append("Attribute id has value " + Integer.toHexString(resid)
  10.  
  11.                 + " from tag " + s + "\n");
  12.  
  13.  
  14.  
  15.         // Get our custom string attribute.
  16.  
  17.         String sn = xrp.getAttributeValue(null, "mystr");
  18.  
  19.         tv.append("Attribute mystr has value " + sn + " from tag " + s + "\n");
  20.  
  21.  
  22.  
  23.         // Get our custom int attribute.
  24.  
  25.         int i = xrp.getAttributeIntValue(null, "myint", 0);
  26.  
  27.         tv.append("Attribute myint has value " + i + " from tag " + s + "\n\n");
  28.  
  29. }
Parsed in 0.038 seconds, using GeSHi 1.0.8.4


A useful feature is that @drawable/my_pic1 is retrieved as a hex value (corresponding to the resource's R.java value). This gives you a handy way to mix and match Android-specific resources and resource references with your own.

The true strength of the above block is that calls to .getAttributeXXX() pull directly from the compiled XML resources (as created by aapt at build time). This means you get the versatility, maintainability and readability of XML combined with the speed of parsing compiled binaries.

4.) Incorporating the above code blocks, and adding parsing for the other tags gives us the core of our parser:

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. // Get the Android-specific compiled XML parser.
  2.  
  3. XmlResourceParser xrp = this.getResources().getXml(R.xml.test);
  4.  
  5. while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
  6.  
  7.         if (xrp.getEventType() == XmlResourceParser.START_TAG) {
  8.  
  9.                 String s = xrp.getName();
  10.  
  11.                 if (s.equals("pictag")) {
  12.  
  13.                         // Get the resource id; this will be retrieved as a
  14.  
  15.                         // resolved hex value.
  16.  
  17.                         int resid = xrp.getAttributeResourceValue(null, "id", 0);
  18.  
  19.                         tv.append("Attribute id has value " + Integer.toHexString(resid)
  20.  
  21.                                 + " from tag " + s + "\n");
  22.  
  23.  
  24.  
  25.                         // Get our custom string attribute.
  26.  
  27.                         String sn = xrp.getAttributeValue(null, "mystr");
  28.  
  29.                         tv.append("Attribute mystr has value " + sn + " from tag "
  30.  
  31.                                 + s + "\n");
  32.  
  33.  
  34.  
  35.                         // Get our custom int attribute.
  36.  
  37.                         int i = xrp.getAttributeIntValue(null, "myint", 0);
  38.  
  39.                         tv.append("Attribute myint has value " + i + " from tag "
  40.  
  41.                                 + s + "\n\n");
  42.  
  43.                 } else if (s.equals("artag")) {
  44.  
  45.                         // Get the resource id; this will be retrieved as a
  46.  
  47.                         // resolved hex value.
  48.  
  49.                         int resid = xrp.getAttributeResourceValue(null, "id", 0);
  50.  
  51.                         tv.append("Attribute id has value " + Integer.toHexString(resid)
  52.  
  53.                                 + " from tag " + s + "\n");
  54.  
  55.  
  56.  
  57.                         // Get our custom string attribute
  58.  
  59.                         String sn = xrp.getAttributeValue(null, "mystr");
  60.  
  61.                         tv.append("Attribute mystr has value " + sn + " from tag "
  62.  
  63.                                 + s + "\n");
  64.  
  65.  
  66.  
  67.                         // Get our custom float attribute.
  68.  
  69.                         float f = xrp.getAttributeFloatValue(null, "myfloat", 0);
  70.  
  71.                         tv.append("Attribute myfloat has value " + f + " from tag "
  72.  
  73.                                 + s + "\n\n");
  74.  
  75.                 } else if (s.equals("plaintag")) {
  76.  
  77.                         // Get the element tag name here; the value will be
  78.  
  79.                         // gotten on the next TEXT event.
  80.  
  81.                         tv.append("Tag " + s + " has value ");
  82.  
  83.                 }
  84.  
  85.         } else if (xrp.getEventType() == XmlResourceParser.END_TAG) {
  86.  
  87.                 ;
  88.  
  89.         } else if (xrp.getEventType() == XmlResourceParser.TEXT) {
  90.  
  91.                 // Get our value from the plaintag element.
  92.  
  93.                 // Since this is a value and not an
  94.  
  95.                 // attribute, we retrieve it with the
  96.  
  97.                 // generic .getText().
  98.  
  99.                 String s1 = xrp.getText();
  100.  
  101.                 tv.append(s1 + "\n\n");
  102.  
  103.         }
  104.  
  105.         xrp.next();
  106.  
  107. }
  108.  
  109. xrp.close();
Parsed in 0.046 seconds, using GeSHi 1.0.8.4


Unlike a normal pull parser it is recommended that you call .close() on XmlResourceParser. The world won't end if you don't, but for resource constrained systems any hint to the system that you are done with a particular object or component is a good thing.

On a related note, for clarity I've used xrp.getEventType() when I need the parse event, but for performance this should really be cached locally (see Android Best Practices, here).

The id attribute is a special case for XmlResourceParser. Technically, instead of calling it id you can call it anything you like, but if you leave it as id, there are a couple of other .getXXX() convenience methods that you can use:

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. // Returns 0 unless attribute name is "id".
  2.  
  3. resid = xrp.getIdAttributeResourceValue(0);
  4.  
  5. Log.v(TAG, "resource id is: " + Integer.toHexString(resid));
  6.  
  7.                                                        
  8.  
  9. // Returns a null string unless attribute name is "id".
  10.  
  11. String s1 = xrp.getIdAttribute();
  12.  
  13. Log.v(TAG, "resource id string is: " + s1);
Parsed in 0.036 seconds, using GeSHi 1.0.8.4


The first one is the same as calling xrp.getAttributeResourceValue(null, "id", 0) as was done in the code earlier.

The second is useful if, for some reason, you want the unresolved string, in its @drawable/whatever format, say, for logging purposes.

The TEXT event is used to retrieve element values. I've included:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <plaintag>42</plaintag>
Parsed in 0.000 seconds, using GeSHi 1.0.8.4


This is the last element in the XML file, and I've parsed it so you can see how it's done, but generally you will want to use attributes. While you can set up your XML files to use just element tags and values, since they are your own custom files, this isn't a good idea if you are planning on using compiled resources. Your XML will be much more verbose, but more importantly, you wont have access to the .getAttributeXXX() methods discussed above. In particular you will not be able to resolve resource references using .getAttributeResourceValue().

Here's an example:

(wrong way using values)

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <resources>
  4.  
  5.         <pictag>
  6.  
  7.                 <id>@drawable/my_pic1</id>  <-- will not resolve
  8.  
  9.                 <mystr>Picture 1</mystr>
  10.  
  11.                 <myint>33</myint>
  12.  
  13.         </pictag>
  14.  
  15.         <pictag>
  16.  
  17.                 <id>@drawable/my_pic2</id>  <-- will not resolve
  18.  
  19.                 <mystr>Picture 2</mystr>
  20.  
  21.                 <myint>44</myint>
  22.  
  23.         </pictag>
  24.  
  25. </resources>
Parsed in 0.003 seconds, using GeSHi 1.0.8.4


vs:

(right way using attributes)

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <resources>
  4.  
  5.         <pictag id="@drawable/my_pic1" mystr="Picture 1" myint="33"/>
  6.  
  7.         <pictag id="@drawable/my_pic2" mystr="Picture 2" myint="44" />
  8.  
  9. </resources>
Parsed in 0.002 seconds, using GeSHi 1.0.8.4


So unless you have some compelling reason to use values (e.g., legacy format, shared XML file) you should use attributes instead.

Takeaways:
  • Use XmlResourceParser for compiled resources; these resources will almost always be local data files.
  • Prefer SAX (for speed) or DOM (for versatility) for non-compiled or external data files.
  • Prefer attributes over values; the real strength of XmlResourceParser is its compiled attribute handling.
  • Feel free to mix resource references as appropriate, and use the "id" attribute tag to indicate this.

The Full Source:

"/src/your_package_structure/CompXML.java"

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.example.compxml;
  2.  
  3.  
  4.  
  5. import java.io.IOException;
  6.  
  7.  
  8.  
  9. import org.xmlpull.v1.XmlPullParserException;
  10.  
  11.  
  12.  
  13. import android.app.Activity;
  14.  
  15. import android.content.res.XmlResourceParser;
  16.  
  17. import android.os.Bundle;
  18.  
  19. import android.util.Log;
  20.  
  21. import android.widget.TextView;
  22.  
  23.  
  24.  
  25. public class CompXML extends Activity {
  26.  
  27.  
  28.  
  29.         private static final String TAG = "CompXML";
  30.  
  31.        
  32.  
  33.         /** Called when the activity is first created. */
  34.  
  35.         @Override
  36.  
  37.         public void onCreate(Bundle savedInstanceState) {
  38.  
  39.                 super.onCreate(savedInstanceState);
  40.  
  41.                
  42.  
  43.                 // Create a new TextView that we can accumulate and display our parsed data to.
  44.  
  45.                 TextView tv = new TextView(this);
  46.  
  47.                 tv.setText("");
  48.  
  49.                 try
  50.  
  51.                 {
  52.  
  53.                         // Get the Android-specific compiled XML parser.
  54.  
  55.                         XmlResourceParser xrp = this.getResources().getXml(R.xml.test);
  56.  
  57.                         while (xrp.getEventType() != XmlResourceParser.END_DOCUMENT) {
  58.  
  59.                                 if (xrp.getEventType() == XmlResourceParser.START_TAG) {
  60.  
  61.                                         String s = xrp.getName();
  62.  
  63.                                         if (s.equals("pictag")) {
  64.  
  65.                                                 // Get the resource id; this will be retrieved
  66.  
  67.                                                 //as a resolved hex value.
  68.  
  69.                                                 int resid = xrp.getAttributeResourceValue(null, "id", 0);
  70.  
  71.                                                 tv.append("Attribute id has value "
  72.  
  73.                                                         + Integer.toHexString(resid)
  74.  
  75.                                                         + " from tag " + s + "\n");
  76.  
  77.  
  78.  
  79.                                                 // Get our custom string attribute.
  80.  
  81.                                                 String sn = xrp.getAttributeValue(null, "mystr");
  82.  
  83.                                                 tv.append("Attribute mystr has value " + sn
  84.  
  85.                                                         + " from tag " + s + "\n");
  86.  
  87.  
  88.  
  89.                                                 // Get our custom int attribute.
  90.  
  91.                                                 int i = xrp.getAttributeIntValue(null, "myint", 0);
  92.  
  93.                                                 tv.append("Attribute myint has value " + i
  94.  
  95.                                                         + " from tag " + s + "\n\n");
  96.  
  97.                                         } else if (s.equals("artag")) {
  98.  
  99.                                                 // Get the resource id; this will be retrieved
  100.  
  101.                                                 //as a resolved hex value.
  102.  
  103.                                                 int resid = xrp.getAttributeResourceValue(null, "id", 0);
  104.  
  105.                                                 tv.append("Attribute id has value "
  106.  
  107.                                                         + Integer.toHexString(resid)
  108.  
  109.                                                         + " from tag " + s + "\n");
  110.  
  111.  
  112.  
  113.                                                 // Get our custom string attribute
  114.  
  115.                                                 String sn = xrp.getAttributeValue(null, "mystr");
  116.  
  117.                                                 tv.append("Attribute mystr has value " + sn
  118.  
  119.                                                         + " from tag " + s + "\n");
  120.  
  121.  
  122.  
  123.                                                 // Get our custom float attribute.
  124.  
  125.                                                 float f = xrp.getAttributeFloatValue(null, "myfloat", 0);
  126.  
  127.                                                 tv.append("Attribute myfloat has value " + f
  128.  
  129.                                                         + " from tag " + s + "\n\n");
  130.  
  131.                                         } else if (s.equals("plaintag")) {
  132.  
  133.                                                 // Get the element tag name here; the value is
  134.  
  135.                                                 // gotten on the next TEXT event.
  136.  
  137.                                                 tv.append("Tag " + s + " has value ");
  138.  
  139.                                         }
  140.  
  141.                                 } else if (xrp.getEventType() == XmlResourceParser.END_TAG) {
  142.  
  143.                                         ;
  144.  
  145.                                 } else if (xrp.getEventType() == XmlResourceParser.TEXT) {
  146.  
  147.                                         // Get our value from the plaintag element.
  148.  
  149.                                         // Since this is a value and not an
  150.  
  151.                                         // attribute, we retrieve it with the
  152.  
  153.                                         // generic .getText().
  154.  
  155.                                         String s1 = xrp.getText();
  156.  
  157.                                         tv.append(s1 + "\n\n");
  158.  
  159.                                 }
  160.  
  161.                                 xrp.next();
  162.  
  163.                         }
  164.  
  165.                         xrp.close();
  166.  
  167.  
  168.  
  169.                 } catch (XmlPullParserException xppe) {
  170.  
  171.                         Log.e(TAG, "Failure of .getEventType or .next, probably bad file format");
  172.  
  173.                         xppe.toString();
  174.  
  175.                 } catch (IOException ioe) {
  176.  
  177.                         Log.e(TAG, "Unable to read resource file");
  178.  
  179.                         ioe.printStackTrace();
  180.  
  181.                 }
  182.  
  183.                 // Display our accumulated string, containing the XML data we just parsed.
  184.  
  185.                 setContentView(tv);
  186.  
  187.         }
  188.  
  189. }
Parsed in 0.051 seconds, using GeSHi 1.0.8.4


Hope this helps!
XCaf
XCaffeinated
Developer
Developer
 
Posts: 25
Joined: Sun Nov 29, 2009 10:16 pm

Top

Postby dimsuz » Tue Jan 26, 2010 1:21 pm

Thanks, this is really useful!

As I can't find the solution to my problem (Resource.getDrawable() fails to parse <animation-list> for some reason, more here), i'll try to read my resource by using XmlResourceParser :)
dimsuz
Freshman
Freshman
 
Posts: 6
Joined: Mon Jan 25, 2010 7:11 pm

Postby tiger79 » Wed Feb 24, 2010 10:39 am

first of all thx for the tutorial,
I was wondering if instead of using an existing xml file (resource) for through the Parser if it's possible to retrieve an XML first from a server (through a HttpPost request) and afterwards pass this ByteArrayBuffer to the parser so that any ISO (or for that matter utf-8) chars will be "rectified" ?
tiger79
Junior Developer
Junior Developer
 
Posts: 10
Joined: Thu Jan 14, 2010 5:30 pm

Postby XCaffeinated » Thu Feb 25, 2010 11:48 pm

Hi Tiger79,

You can most certainly retrieve XML files off a server, but it is probably better to use a SAX or DOM parser rather than the one I've described in this tutorial (XmlResourceParser) - which is mainly for parsing local files. Plusminus did a terrific tutorial on how to use Android's SAXParser for retrieving external XML files at:

http://www.anddev.org/parsing_xml_from_the_net_-_using_the_saxparser-t353.html

Hope this helps!
-XCaf
XCaffeinated
Developer
Developer
 
Posts: 25
Joined: Sun Nov 29, 2009 10:16 pm

Postby tiger79 » Wed Mar 03, 2010 2:37 pm

hi,
yes I saw that tutorial as well... But it directly pasres xml from an Url, without being able to supply specific data (through POST for example) to the server first...
In the end I opted for a combination ; first doing a HTTP POST request to the server (with several variables and data in the body), download that same POST response (which should contain XML) and then use the XML parser when the response is done downloading...
If there is any way to combine POST request with XML parsing I'd be happy to hear that !!!
tiger79
Junior Developer
Junior Developer
 
Posts: 10
Joined: Thu Jan 14, 2010 5:30 pm

Postby lapacho » Sun Mar 28, 2010 5:11 am

Excellent explanation. Thought I came here browsing for another thing. I managed to parse a xml file using the XmlPullParser implementation from: http://kxml.sourceforge.net/

My question is about resources on /res/xml.

You talk about <pictag> and other predefined tags, but always calling resources as @drawable or @array. I need to know if we can insert in resources a custom xml and then obtain that resource parser with getXml().

What I have done is to "upload" an xml file into /data/app, open it with FileReader instance and the parse it with the XmlPullParser implementation above. It works excellent, without any problems, but, If I can precompile on build time an xml will be better to avoid that overhead of parsing a file.

For example, imagine I have this xml file:
Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
  1.  
  2. <?xml version="1.0"?>
  3.  
  4. <route name="route1" description="Something. Distance: 19km">
  5.  
  6.   <geopoint name="a" latitude="-33121972" longitude="-64358597">
  7.  
  8.     <description lang="us">Start</description>
  9.  
  10.     <description lang="es">Comienzo</description>
  11.  
  12.   </geopoint>
  13.  
  14. ...etc
  15.  
  16.  
Parsed in 0.002 seconds, using GeSHi 1.0.8.4


Is it posible to find a workaround to build this in compile time? Route, and RouteItem are arbitrary classes I have defined. Is it posible to merge this "arbitrary types" within the android resources in compile time?


Thanks in advance,
lapacho
Freshman
Freshman
 
Posts: 6
Joined: Sun Mar 28, 2010 5:02 am

Top

Re: Using XmlResourceParser to Parse Custom Compiled XML

Postby Katish » Tue Jun 21, 2011 8:16 pm

Earlier you have used the mypic1 and mypic2 and you have successfully get the resolved hex value as

String resid = xrp.getAttributeResourceValue(null, "pictag");

I want to display those images.

How that can be done???

Please reply..
Katish
Once Poster
Once Poster
 
Posts: 1
Joined: Tue Jun 21, 2011 8:13 pm

Re: Using XmlResourceParser to Parse Custom Compiled XML

Postby scottt1 » Thu Jun 28, 2012 8:22 am

Katish wrote:Earlier you have used the mypic1 and mypic2 and you have successfully get the resolved hex value as

String resid = xrp.getAttributeResourceValue(null, "pictag");

I want to display those images.

How that can be done???

Please reply..


Check Android developer guide for more information..
http://developer.android.com/index.html
scottt1
Freshman
Freshman
 
Posts: 3
Joined: Thu Jun 28, 2012 8:14 am

Re: Using XmlResourceParser to Parse Custom Compiled XML

Postby smit » Fri Nov 23, 2012 7:54 pm

I I follow this tut

But there is to much data in my xml and it is going out from normal page

can I add scroll view in this method

thank you
smit
Once Poster
Once Poster
 
Posts: 1
Joined: Fri Nov 23, 2012 7:49 pm

Re: Using XmlResourceParser to Parse Custom Compiled XML

Postby sebastian_jebas » Thu Apr 25, 2013 4:42 am

i am getting error:null when i run the application in sony xperia

i am doing an school project, so in an hurry sir , can you help , i just need to use google search results in my application.

so i tried http://google.com/complete/search?outpu ... op+near+me
i have xml now , but to parse , i am very new to android , just learned the basics and doing my school project sir .
http://jebastin.5gbfree.com/SplashLoading.apk - my project
jebastin.5gbfree.com/xmlParser.apk - your xml project

i have attached the log file with this.
Attachments
log.txt
(4.14 KiB) Downloaded 55 times
sebastian_jebas
Once Poster
Once Poster
 
Posts: 1
Joined: Thu Apr 25, 2013 4:23 am

Top

Return to Novice Tutorials

Who is online

Users browsing this forum: No registered users and 15 guests