0

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

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

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

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

有人知道我可以如何转换吗?

4

2 回答 2

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

但是这个八位字节序列的确切含义是任何人的猜测......

于 2013-06-17T07:44:30.433 回答
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); 
   }
}
于 2013-06-17T02:34:07.243 回答