Java SimpleXML使用class属性填充内部对象

时间:2016-07-14 13:29:03

标签: java android xml simple-framework

我是Simple XML的新手,但我遇到了内部元素中不需要的对象数量的问题。

实际问题是我希望拥有这种层次结构:

<Request>
    <SpecificRequest>
         <UniqueID></UniqueID>
             or
         <Password></Password>
    </SpecificRequest>
</Request>

但是有这个:

<Request>
     <SpecificRequest>
        <mData class="com.example.package.UIDData">
           <UniqueID>6252859A</UniqueID>
        </mData>
     </SpecificRequest >
</Request>

类看起来像这样:

Root请求对象:

@Root(name = "Request")
public class Request {
    @Element(name = "SpecificRequest")
    private SpecificRequest mSpecificRequest;

    public Request(SpecificRequest specificRequest) {
        mSpecificRequest = specificRequest;
    }
}

特定请求对象:

public class SpecificRequest {
    private Data mData;

    public SpecificRequest(Data data) {
        mData = data;
    }
}

通用数据类:

public abstract class Data {
    private Type mType = Type.None;

    protected Data(Type type) {
        mType = type;
    }

    // other abstract stuff
}

具体数据类:

public class UIDData extends Data {
    @Element(name = "UniqueID")
    private String mUID;

    public UIDData(String UID) {
        super(Type.UID);
        mUID = UID;
    }
}

P.S。这不是thisthis的重复。

1 个答案:

答案 0 :(得分:1)

将UIDData.class添加为SimpleXml @Element批注中的类型

{
    "engagementNumber":["one","two"]
}