Deserialization of xml with simplexml in java

僤鯓⒐⒋嵵緔 提交于 2019-12-01 19:29:15

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.

 @Element( required=false)
    private String language;

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!