Skip to content Skip to sidebar Skip to footer

Deserialization Of Xml With Simplexml In Java

I'm trying to deserialize an xml string with SimpleXML, i've looked at their examples but i'm not really sure that wether i grasp the concept or not. Sample XML (validates):

Solution 1:

I have a suggestion, but it's not ready to run (see below). However, ther maybe another, better solution ...

Class Item

Holding all your informations.

@Root(name="Item")
public class Item
{
    @Element(name="ID", required=true)
    private int id;
    @Element(name="language", required=true)
    private String language;
    @Element(name="price", required=true)
    private int price;


    // ...
}

Class Result

Constructing everything around Item. Btw. you dont have to use inner classes here.

@Namespace(prefix="soap", reference="http://schemas.xmlsoap.org/soap/envelope/")
@Root(name="Envelope")
public class Result
{
    @Namespace(prefix="soap")
    @Element(name="Body")
    private SoapBody body;


    // ...


    // -----------------------------------------------------------------
    // -- Some inner classes, constructing the elements as in you xml --
    // -----------------------------------------------------------------


    @Namespace(prefix="soap")
    @Root(name="Body")
    static class SoapBody
    {
        @Element(name="Response")
        private Response response;


        // ...
    }



    @Root(name="Response")
    static class Response
    {
        @ElementList(name="Result", required=true)
        private List<Item> result;


        // ...
    }
}

(Example) How to use this code

Writing

File f = ...

Serializer ser = new Persister();
Result r = new Result();
ser.write(r, f);

Reading

File f = ...

Serializer ser = new Persister();
Result r = ser.read(Result.class, f);

Now ... there's one problem which prevents this example from running: <language /> This empty Element let SimpleXML throw a ValueRequiredException.


Solution 2:

 @Element( required=false)
    private String language;

Add this in your Item class and generate the getter and setter.I think it should work


Post a Comment for "Deserialization Of Xml With Simplexml In Java"