XStream xml 2 objectとobject 2 xml
4030 ワード
まずxstream-distribution-1.4.4-binのjarをコンパイルと実行環境に追加します.
次にpojoクラスを定義します.implements javaは必要ありません.io.Serializable
次に、実行テストクラスを書きます.
最後の出力
ここでstaticプロパティはxmlに入っていないことがわかります.
ここで注意しなければならないのはStringの最大長さが65 xxxなので、あまり大きなクラスとxmlを使うことはできません.そうでないと問題が発生します.もちろんXstreamオープンソースには、このような問題に特化したapiがあります.
もし私たちが彼女に車を追加したら?
では出力します
maggie
172
65
ppo
maggie
次にpojoクラスを定義します.implements javaは必要ありません.io.Serializable
public class SexyWoman {
private String name;
private long high;
private long weight;
public static String face="pretty";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getHigh() {
return high;
}
public void setHigh(long high) {
this.high = high;
}
public long getWeight() {
return weight;
}
public void setWeight(long weight) {
this.weight = weight;
}
}
次に、実行テストクラスを書きます.
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class XStreamTest {
public static void main(String[] args) {
SexyWoman sw1=new SexyWoman();
sw1.setName("maggie");
sw1.setHigh(172);
sw1.setWeight(65);
sw1.face="ddd";
String xmlContent=doPojo2Xml(sw1);
System.out.println(xmlContent);
System.out.println("
");
SexyWoman sw2=new SexyWoman();
Object obj=doXml2Pojo(xmlContent,sw2);
System.out.println(((SexyWoman)obj).getName());
}
public static String doPojo2Xml(Object obj){
XStream xstream=new XStream(new DomDriver());
xstream.alias(obj.getClass().getSimpleName(), obj.getClass());
String xmlContent=xstream.toXML(obj);
return xmlContent;
}
public static Object doXml2Pojo(String xmlContent,Object obj){
XStream xstream=new XStream(new DomDriver());
xstream.alias(obj.getClass().getSimpleName(), obj.getClass());
Object getObj=xstream.fromXML(xmlContent);
return getObj;
}
}
最後の出力
<SexyWoman>
<name>maggie</name>
<high>172</high>
<weight>65</weight>
</SexyWoman>
maggie
ここでstaticプロパティはxmlに入っていないことがわかります.
ここで注意しなければならないのはStringの最大長さが65 xxxなので、あまり大きなクラスとxmlを使うことはできません.そうでないと問題が発生します.もちろんXstreamオープンソースには、このような問題に特化したapiがあります.
もし私たちが彼女に車を追加したら?
public class Car implements java.io.Serializable{
private String cardName;
public String getCardName() {
return cardName;
}
public void setCardName(String cardName) {
this.cardName = cardName;
}
}
public class XStreamTest {
public static void main(String[] args) {
SexyWoman sw1=new SexyWoman();
sw1.setName("maggie");
sw1.setHigh(172);
sw1.setWeight(65);
sw1.face="ddd";
Car car1=new Car();
car1.setCardName("ppo");
sw1.setCar(car1);
String xmlContent=doPojo2Xml(sw1);
System.out.println(xmlContent);
System.out.println("
");
SexyWoman sw2=new SexyWoman();
Object obj=doXml2Pojo(xmlContent,sw2);
System.out.println(((SexyWoman)obj).getName());
}
public static String doPojo2Xml(Object obj){
XStream xstream=new XStream(new DomDriver());
xstream.alias(obj.getClass().getSimpleName(), obj.getClass());
String xmlContent=xstream.toXML(obj);
return xmlContent;
}
public static Object doXml2Pojo(String xmlContent,Object obj){
XStream xstream=new XStream(new DomDriver());
xstream.alias(obj.getClass().getSimpleName(), obj.getClass());
Object getObj=xstream.fromXML(xmlContent);
return getObj;
}
}
では出力します
maggie