我正在使用DBUnit导出到XML。当它写入我的Address对象时,这就是XML文件中出现的内容:
<![CDATA[rO0ABXNyABRjc2hlZXRzLmNvcmUuQWRkcmVzc/DHvyOozrwhAgACSQAGY29sdW1uSQADcm93eHAA
AAAAAAAAAA==]]>
现在我正在尝试阅读它,并将其转换回地址,但它不起作用:/
Address类包含一个int Row,int Column。
有人知道如何转换它吗?
答案 0 :(得分:0)
可以使用以下内容从CDATA
部分(<![CDATA[
和]]>
之间)的字符串中加载对象:
import java.io.ByteArrayInputStream;
import java.io.ObjectInputStream;
import com.google.common.io.BaseEncoding; // guava 14
import sheets.core.Address; // your class
class Decode {
static <T> T decode(String encoded) throws Exception {
byte[] serialized = BaseEncoding.base64().decode(encoded);
try (
ByteArrayInputStream serstr = new ByteArrayInputStream(serialized);
ObjectInputStream objstr = new ObjectInputStream(serstr);) {
return (T) objstr.readObject();
}
}
static void example() {
String encoded = "rO0ABXNy... [snipped] ..."; // load from xml element here.
Address a = decode(encoded);
}
}
答案 1 :(得分:0)
用saxon解码:base64Binary-to-octets()表明它是八位字节序列的base64表示
172 237 0 5 115 114 0 20 99 115 104 101 101 116 115 46 99 111 114 101 46 65 100 100 114 101 115 115 240 199 191 35 168 206 188 33 2 0 2 73 0 6 99 111 108 117 109 110 73 0 3 114 111 119 120 112 0 0 0 0 0 0 0 0
但是这个八位字节序列的意思是任何人的猜测......