便利なコードパーツ集!

やまろうのプログラミングTips

Java

XMLとObjectの双方向変換はjava.beans.XMLEncoder &XMLDecoderで簡単

投稿日:

2009/4

JAXBとかcommons.digester等、XML←→Object変換するライブラリはたくさん
ありますが、実はJDKのクラスの中にも存在するのです。
それが
・java.beans.XMLEncoder
・java.beans.XMLDecoder
です。使い方は簡単です。コードを見てみましょう!!

スポンサーリンク



[実行結果]

getDouble1=56.7
getInt1=139
getString1=Lust
getArrayList1=[Greed, Edo, Tue Apr 08 16:01:26 JST 2008,
sample.xmlconvert.ValueObject2@5be64f80]
getHashMap1={key1=Aru, key3=sample.xmlconvert.ValueObject2@5be64f80,
key2=Winly}

[Test.xml]

<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.1" class="java.beans.XMLDecoder">
<object class="sample.xmlconvert.ValueObject1">
<void property="arrayList1">
<object class="java.util.ArrayList">
<void method="add">
<string>Greed</string>
</void>
<void method="add">
<string>Edo</string>
</void>
<void method="add">
<object class="java.util.Date">
<long>1207638086172</long>
</object>
</void>
<void method="add">
<object id="ValueObject20" class="sample.xmlconvert.ValueObject2">
<void property="money">
<int>156488</int>
</void>
<void property="name">
<string>Mastang</string>
</void>
<void property="tax">
<float>1.546588</float>
</void>
</object>
</void>
</object>
</void>
<void property="double1">
<double>56.7</double>
</void>
<void property="hashMap1">
<object class="java.util.HashMap">
<void method="put">
<string>key1</string>
<string>Aru</string>
</void>
<void method="put">
<string>key3</string>
<object idref="ValueObject20"/>
</void>
<void method="put">
<string>key2</string>
<string>Winly</string>
</void>
</object>
</void>
<void property="int1">
<int>139</int>
</void>
<void property="string1">
<string>Lust</string>
</void>
</object>
</java>

ArrayListやHashMapも変換できるようです。
しかし、BigIntegerは駄目でした。変換させようとすると
下記のようにコンソールに出力されXMLにはBigIntegerの値は出力されません。
[実行結果]

java.lang.InstantiationException: java.math.BigInteger
Continuing ...
java.lang.RuntimeException: failed to evaluate: <unbound>=BigInteger.new();
Continuing ...

ってことで、やっぱりJAXBとかcommons.digester
とかを使った方がいいかもしれません。

スポンサーリンク

-Java

Copyright© やまろうのプログラミングTips , 2020 AllRights Reserved Powered by AFFINGER4.