Java Jaxb 解组和数据字节序
Java Jaxb unmarshall and endianness of data
我打算使用 jaxb 将 xml 解组为 POJO。现在这个 pojo 将被序列化并通过网络发送到其他应用程序。现在这个 POJO 中的一些包含一个 int 字段(4 或 8 个字节),当从 xml 读取时,需要根据一些标志以小端或大端表示法对其进行序列化。 (此标志不是逐个字段而是在应用程序实例级别)。无论如何在 Jaxb 中,解组可以通过 xml 中的某种注释来遵守这种字节序设置吗?
在这方面的任何帮助表示感谢。
谢谢
您可以在您的 POJO 中指定您自己的 XmlAdapter
:
@XmlElement(name="intField")
@XmlJavaTypeAdapter(EndianIntAdapter.class)
public int intField;
然后实现适配器:
class EndianIntAdapter extends XmlAdapter<String, Integer> {
@Override
public String marshal(Integer field) throws Exception {
//int to string based on endianness
}
@Override
public Integer unmarshal(String str) throws Exception {
//String from xml to int based on endianness
}
}
我打算使用 jaxb 将 xml 解组为 POJO。现在这个 pojo 将被序列化并通过网络发送到其他应用程序。现在这个 POJO 中的一些包含一个 int 字段(4 或 8 个字节),当从 xml 读取时,需要根据一些标志以小端或大端表示法对其进行序列化。 (此标志不是逐个字段而是在应用程序实例级别)。无论如何在 Jaxb 中,解组可以通过 xml 中的某种注释来遵守这种字节序设置吗?
在这方面的任何帮助表示感谢。
谢谢
您可以在您的 POJO 中指定您自己的 XmlAdapter
:
@XmlElement(name="intField")
@XmlJavaTypeAdapter(EndianIntAdapter.class)
public int intField;
然后实现适配器:
class EndianIntAdapter extends XmlAdapter<String, Integer> {
@Override
public String marshal(Integer field) throws Exception {
//int to string based on endianness
}
@Override
public Integer unmarshal(String str) throws Exception {
//String from xml to int based on endianness
}
}