我有一个要用于序列化/反序列化的简单 XML 注释类。我有一个字节 [] 数组,我正在使用自定义转换器,但它在读取方法中失败..
这是我的简单 XML 注释对象
@Root
public class Device implements Serializable
{
@Element
@Convert(ByteArrayConverter.class)
protected byte[] imageRef;
...
}
这是我的转换器
import org.simpleframework.xml.convert.Converter;
import org.simpleframework.xml.stream.InputNode;
import org.simpleframework.xml.stream.OutputNode;
public class ByteArrayConverter implements Converter<byte[]>
{
@Override
public byte[] read(InputNode node) throws Exception
{
String value = node.getValue();
//return value.getBytes();
return new byte[]{1,2,3,4,5};
}
@Override
public void write(OutputNode node, byte[] byteArray) throws Exception
{
node.setValue("something");
}
}
这是我的名为 device.xml 的 XML
<device>
<imageRef>AQIDBAU=</imageRef>
</device>
这是我失败的序列化代码
Strategy strategy = new AnnotationStrategy();
Serializer serializer = new Persister(strategy);
File file = new File("device.xml");
Device device = serializer.read(Device.class, file);
我在 ByteArrayConverter.read() 方法中放置了一个断点,并说它正确执行并返回一个字节数组。然而,在那之后,在简单 XML 的某个地方,我得到了这个
线程“主”org.simpleframework.xml.core.InstantiationException 中的异常:不兼容的类 [B for field 'imageRef' protected byte[] com.test.Device.imageRef 在 org.simpleframework.xml.core.Factory 的第 4 行。 getOverride(Factory.java:147) at org.simpleframework.xml.core.PrimitiveFactory.getInstance(PrimitiveFactory.java:82) at org.simpleframework.xml.core.Primitive.readElement(Primitive.java:186) at org.simpleframework .xml.core.Primitive.read(Primitive.java:124) 在 org.simpleframework.xml.core.Composite.readVariable(Composite.java:623) 在 org.simpleframework.xml.core.Composite.readInstance(Composite.java :573) 在 org.simpleframework.xml.core.Composite.readUnion(Composite.java:549) 在 org.simpleframework.xml.core.Composite.readElement(Composite.java:532) 在 org.simpleframework.xml.core.Composite.readElements(Composite.java:445) at org.simpleframework.xml.core.Composite.access$400(Composite.java:59) at org.simpleframework.xml.core.Composite$Builder.read (Composite.java:1383) 在 org.simpleframework.xml.core.Composite.read(Composite.java:201) 在 org.simpleframework.xml.core.Composite.read(Composite.java:148) 在 org.simpleframework。 xml.core.Traverser.read(Traverser.java:92) 在 org.simpleframework.xml.core.Persister.read(Persister.java:625) 在 org.simpleframework.xml.core.Persister.read(Persister.java: 606) 在 org.simpleframework.xml.core.Persister.read(Persister.java:543) 在 org.simpleframework.xml.core.Persister 的 org.simpleframework.xml.core.Persister.read(Persister.java:584) .read(Persister.java:521) 在 org.simpleframework.xml.core.Persister.read(Persister.爪哇:426)
任何指针都会有所帮助..