我正在尝试将SimpleXml库集成到我正在处理的项目中。有没有办法将模型序列化为XML,某些字段是可选的。无法从文档中弄明白。
答案 0 :(得分:1)
您应该使用已定义类型的Object表示:
double - >双 int - >整数
这允许您将它们定义为null,如下所示:
@Root(name = "someWS")
public class GetSmth{
@Element(name="Latitude", required=false)
private Double latitude;
@Element(name="Longtitude", required=false)
private Double longtitude;
@Element(name="PageNumber", required=false)
private Integer pageNumber;
@Element(name="PageSize", required=false)
private Integer pageSize;
@Element(name="CompanyDetailId")
private Integer companyDetailId;
public GetSmth(Double latitude, Double longtitude, Integer pageNumber,
Integer pageSize, Integer companyDetailId) {
this.latitude = latitude;
this.longtitude = longtitude;
this.pageNumber = pageNumber;
this.pageSize = pageSize;
this.companyDetailId = companyDetailId;
}
}
查看documentation,required = false对象反序列化比对象序列化更多。因此,您可以在那里使用原始类型,但这样做会要求您在赋值期间使用非null值。在反序列化时,如果您的xml没有定义纬度,则纬度将被赋予默认初始值0而不是null。只取决于你想要的行为。
修改强>
确保使用Object representationations定义构造函数:
public GetSmth(Double latitude, Double longtitude, Integer pageNumber,
Integer pageSize, Integer companyDetailId)
答案 1 :(得分:1)
我更喜欢有一个空的默认构造函数(或者只包含必需字段的构造函数),然后为可选属性添加setter。如果您担心可变性,请使用Builder
模式创建仅包含所需字段的对象。
使用“部分”对象(即只设置其部分成员的对象),Simple框架将仅将提供的字段序列化为XML。