Xml Serialization in Java using Simple – Inheritance

This is a continuation from this post: Xml Serialization in Java using Simple

Example 4 – Serializing a list of objects that inherit from Person

Lets create some objects that inherit from Person. I looked at some documentation to try to get it right the first time. And then I hoped that it would just work….

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
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
 
@Root
public class Person
{
    @Element(name="FirstName")
    private String _FirstName = "";
 
    @Element(name="LastName")
    private String _LastName = "";
 
    public String getFirstName()
    {
        return _FirstName;
    }
 
    public void setFirstName(String inFirstName)
    {
        _FirstName = inFirstName;
    }
 
    public String getLastName()
    {
        return _LastName;
    }
 
    public void setLastName(String inLastName)
    {
        _LastName = inLastName;
    }
}
People.java
01
02
03
04
05
06
07
08
09
10
11
import java.util.ArrayList;
import java.util.List;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;
 
@Root
public class People
{
    @ElementList(inline=true)
    List<Person> List = new ArrayList<Person>();
}

I didn’t want to get too complex so I only added a single item to Patient, a list of Symptoms.

Patient
1
2
3
4
5
6
7
8
9
import java.util.ArrayList;
import java.util.List;
import org.simpleframework.xml.ElementList;
 
public class Patient extends Person
{
    @ElementList(entry = "Symptom", inline = true)
    public List<String> Symptoms = new ArrayList<String>();
}

For the Physician, again to keep it simple, I only added a list of Hospitals.

Physician.java
1
2
3
4
5
6
7
8
9
import java.util.ArrayList;
import java.util.List;
import org.simpleframework.xml.ElementList;
 
public class Physician extends Person
{
    @ElementList(entry = "Hospital", inline = true)
    public List<String> Hospitals = new ArrayList<String>();
}

And here is the main method where I create the instances and serialize them.

Run.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
import java.io.File;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;
 
public class Run
{
    public static void main(String[] args) throws Exception
    {
        People people = new People();
         
        Patient p1 = new Patient();
        p1.setFirstName("Jared");
        p1.setLastName("Barneck");
        p1.Symptoms.add("Runny nose");
        p1.Symptoms.add("Congestion");
        people.List.add(p1);
 
        Physician p2 = new Physician();
        p2.setFirstName("Mike");
        p2.setLastName("Michaels");
        p2.Hospitals.add("Intermount Health Care");
        p2.Hospitals.add("St. Marks");
        people.List.add(p2);
         
        Serializer serializer = new Persister();
        File file = new File("people.xml");
 
        serializer.write(people, file);
    }
}

And yeah! This worked. Here is the Xml.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<people>
   <person class="Patient">
      <FirstName>Jared</FirstName>
      <LastName>Barneck</LastName>
      <Symptom>Runny nose</Symptom>
      <Symptom>Congestion</Symptom>
   </person>
   <person class="Physician">
      <FirstName>Mike</FirstName>
      <LastName>Michaels</LastName>
      <Hospital>Intermount Health Care</Hospital>
      <Hospital>St. Marks</Hospital>
   </person>
</people>

There you go.

There are a lot more examples here:
Simple Xml Serialization Tutorial

2 Comments

  1. Marek L. says:

    That's what I looked. Thanks a lot. I'm trying to code backup functionality in my application. Your article is very helpful.

  2. [...] in Java using Simple – Inheritance Filed under: FreeBSD — rhyous @ 9:24 pm Read more Share this:DiggRedditLike this:LikeBe the first to like this post. Leave a [...]

Leave a Reply to Marek L.

How to post code in comments?