Android and Xml Serialization with Simple

Xml serialization is almost becoming a standard requirement for a language these days and so as I have been taking an Android class and I couldn’t find an Xml Serialization library as part of Android by default, I set out in search of one.

I came across a java XML Serialization project called Simple.

So here is a quick entry-level example of how to use Simple in an Android development project.

Note: This walk-thru assumes you are using Eclipse.

Step 1 – Create a new Android Project

  1. Go to File | New Project and select Android.
  2. Provide a Project Name.
  3. Select the minimum build target.
  4. Provide a Package name.
  5. Click Finish.

Step 2 – Download Simple

  1. Go to the Simple download page: http://simple.sourceforge.net/download.php
  2. Extract the zip file.

Step 3 – Add the Simple library to your project

  1. Create a folder called libs in your project.
  2. Copy the jar file called simple-xml-2.6.2.jar to the libs directory you just created.Note: Be aware your version may be newer than 2.6.2.
  3. In Eclipse, right-click on simple-xml-2.6.2.jar (if it doesn’t show up refresh) and choose Build Path | Add to Build Path.

Step 4 – Create an Serializeable object

  1. Right-click on your package and choose New | Class.
  2. Provide a class name and click ok.
  3. The following is an example Person class:Person.java
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    package org.jaredbarneck.cs6890;
     
    import org.simpleframework.xml.Element;
    import org.simpleframework.xml.Root;
     
    @Root
    public class Person
    {
     
        public Person()
        {
        }
     
        public Person(String inFirstName, String inLastName)
        {
            SetFirstname(inFirstName);
            SetLastname(inLastName);
        }
     
        @Element
        private String FirstName;
     
        public String GetFirstName()
        {
            return FirstName;
        }
     
        public void SetFirstname(String inFirstName)
        {
            FirstName = inFirstName;
        }
     
        @Element
        private String LastName;
     
        public String GetLastName()
        {
            return LastName;
        }
     
        public void SetLastname(String inLastName)
        {
            LastName = inLastName;
        }
     
        @Override
        public boolean equals(Object inObject)
        {
            if (inObject instanceof Person)
            {
                Person inPerson = (Person)inObject;
                return this.FirstName.equalsIgnoreCase(inPerson.FirstName)
                    && this.LastName.equalsIgnoreCase(inPerson.LastName);
            }
            return false;
        }
    }

Step 5 – Serialize and Deserialize in your main Activity

  1. Add the following code to your main Activity:Note: Code should be clear and is commented.PersonActivity.java
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    package org.jaredbarneck.cs6890;
     
    import java.io.File;
     
    import org.simpleframework.xml.Serializer;
    import org.simpleframework.xml.core.Persister;
     
    import android.app.Activity;
    import android.os.Bundle;
     
    public class PersonActivity extends Activity
    {
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            // Create a Person object
            Person person1 = new Person("John", "Johnson");
     
            // Create a file to save to and make sure to use the path provided from
            // getFilesDir().getPath().
            File xmlFile = new File(getFilesDir().getPath() + "/Person.xml");
     
            // Serialize the Person
     
            try
            {
                Serializer serializer = new Persister();
                serializer.write(person1, xmlFile);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
     
            // Create a second person object
            Person person2 = null;
     
            // Deserialize the Person
            if (xmlFile.exists())
            {
                try
                {
                    Serializer serializer = new Persister();
                    person2 = serializer.read(Person.class, xmlFile);
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
     
            boolean b = person1.equals(person2);
        }
    }

Go ahead and try this in your Android emulator and step through it with a debugger.

You have now successfully implemented Xml Serialization in Java on Android using Simple.

7 Comments

  1. roadside assistance gloucester

    Rhyous

  2. Hey Rhyous, Is it possible for you to look into this: http://stackoverflow.com/q/41426251/1944896 ?

  3. Abhishek says:

    Currently, person.xml file is created with root tag . How to create as a root tag(means first letter with capital)?

    I also want to include namespace with root tag. For example -

    Is it possible to achieve with "Simple" library?

  4. Shaon says:

    If i have a list of persons. How would i loop through the xml elements and put the read values in a arraylist, i mean add to arraylist the below object:
    person2 = serializer.read(Person.class, xmlFile)

  5. hong says:

    Where should I put my xml file ? and what will I do when I need to read the xml from thhp api ? thank

Leave a Reply to hong

How to post code in comments?