将对象转换为地址

时间:2013-06-16 23:11:42

标签: java xml dbunit

我正在使用DBUnit导出到XML。当它写入我的Address对象时,这就是XML文件中出现的内容:

<![CDATA[rO0ABXNyABRjc2hlZXRzLmNvcmUuQWRkcmVzc/DHvyOozrwhAgACSQAGY29sdW1uSQADcm93eHAA
AAAAAAAAAA==]]>

现在我正在尝试阅读它,并将其转换回地址,但它不起作用:/

Address类包含一个int Row,int Column。

有人知道如何转换它吗?

2 个答案:

答案 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

但是这个八位字节序列的意思是任何人的猜测......