作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Parceler 的自述文件指出它可以与其他基于 POJO 的库一起使用,尤其是 SimpleXML。
是否有任何示例可以证明其用法?
我已经成功地将 Parceler 与 GSON 结合使用:
Gson gson = new GsonBuilder().create();
ParcelerObj parcelerObj = gson.fromJson(jsonStr, ParcelerObj.class);
String str = gson.toJson(parcelerObj);
但是,我不确定从哪里开始使用 SimpleXML。我目前有以下 SimpleXML 类:
@Root(name="point")
@Order(attributes={"lat", "lon", " alt"})
public class SensorLocation {
@Attribute
private double lat;
@Attribute
private double lon;
@Attribute
private double alt;
public SensorLocation (
@Attribute(name="lat") double lat,
@Attribute(name="lon") double lon,
@Attribute(name="alt") double alt
) {
this.lat = lat;
this.lon = lon;
this.alt = alt;
}
}
然后可以将此类序列化为以下 XML
<point lat="10.1235" lon="-36.1346" alt="10.124"/>
使用以下代码:
SensorLocation sl = new SensorLocation (10.1235, -36.1346, 10.124);
Serializer s = new Persister();
ByteArrayOutputStream out = new ByteArrayOutputStream();
s.write(sl, out);
我目前有一个奇怪的要求,即保持 XML 属性和元素的特定顺序。这就是我使用 @Order
的原因。
Parceler 如何与 SimpleXML 一起工作?我会将 Parceler 实例传递给 Serializer.write() 吗?
如果有人可以向我指出资源,我可以进行自己的研究。我只是找不到任何起点。
最佳答案
这是同时支持 SimpleXML 和 Parceler 的 bean 示例:
@Parcel
@Root(name="point")
@Order(attributes={"lat", "lon", " alt"})
public class SensorLocation {
@Attribute
private double lat;
@Attribute
private double lon;
@Attribute
private double alt;
@ParcelConstructor
public SensorLocation (
@Attribute(name="lat") double lat,
@Attribute(name="lon") double lon,
@Attribute(name="alt") double alt
) {
this.lat = lat;
this.lon = lon;
this.alt = alt;
}
}
值得注意的是,Parceler 的这种配置将使用反射来访问您的 bean 的字段。使用非私有(private)字段将避免警告和轻微的性能影响。
用法:
SensorLocation sl = new SensorLocation (10.1235, -36.1346, 10.124);
Parcelable outgoingParcelable = Parceler.wrap(sl);
//Add to intent, etc.
//Read back in from incoming intent
Parcelable incomingParcelable = ...
SensorLocation sl = Parceler.unwrap(incomingParcelable);
Serializer s = new Persister();
ByteArrayOutputStream out = new ByteArrayOutputStream();
s.write(sl, out);
因为 Parceler 不会在您的 bean 中引入任何代码,所以您可以随意使用它。
关于java - Parceler 和 SimpleXml 如 Parceler 的自述文件所述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36807463/
自从去年的培训开始到现在工作时间加起来有一年零三个月了。网络运营(网络营销) 搜索引擎优化 新媒体 竞价 dedecms建站 淘宝店铺简单装修 优化推广。 还记得那时候每天一周下来有两天的
我是一名优秀的程序员,十分优秀!