您的位置:首页 > 编程语言 > Java开发

java simpleXml序列化反序列化小例子

2014-06-18 09:50 357 查看


Customer.java

package com.fei;

import java.util.ArrayList;
import java.util.List;

import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;

@Root
public class Customer {

//@Element(required = true) 默认为true
//@Element(type = void.class) 默认为void
@Element
private String code;
@Element
private String name;
@Element
private Address address;
@ElementList(required = false,type = Order.class)
private List<Order> orders = new ArrayList<Order>();

public Customer(){
super();
}

public Customer(String code, String name, Address address,
List<Order> orders) {
super();
this.code = code;
this.name = name;
this.address = address;
this.orders = orders;
}

public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public List<Order> getOrders() {
return orders;
}
public void setOrders(List<Order> orders) {
this.orders = orders;
}
}


Address.java

package com.fei;

import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;

@Root
public class Address {

@Element
private String code;
@Element
private String name;

public Address(){
super();
}
public Address(String code,String name){
super();
this.code = code;
this.name = name;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}


Order.java

package com.fei;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;

@Root
public class Order {

@Element
private String code;
@Element
private Date date;
@ElementList(required = false,type = Item.class)
private List<Item> items = new ArrayList<Item>();

public Order(){
super();
}
public Order(String code, Date date, List<Item> items) {
super();
this.code = code;
this.date = date;
this.items = items;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public Date getDate() {
return date;
}

public void setDate(Date date) {
this.date = date;
}

public List<Item> getItems() {
return items;
}

public void setItems(List<Item> items) {
this.items = items;
}

}


Item.java

package com.fei;

import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;

@Root
public class Item {

@Element
private String code;
@Element
private String name;
@Element
private int quatity;

public Item(){
super();
}
public Item(String code, String name, int quatity) {
super();
this.code = code;
this.name = name;
this.quatity = quatity;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getQuatity() {
return quatity;
}

public void setQuatity(int quatity) {
this.quatity = quatity;
}

}


CustomerTest.java

package test;

import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;

import com.fei.Address;
import com.fei.Customer;
import com.fei.Item;
import com.fei.Order;

public class CustomerTest {

public static void main(String[] args) throws Exception{
Customer customer = create();
String filePath = "d:/customerOrder.xml";
//序列化,把对象转为xml
write(customer,filePath);
//反序列化,xml转为对象
read(filePath);
}

private static  Customer create(){
List<Item> items = new ArrayList<Item>();
Item item1 = new Item("apple","苹果",5);
Item item2 = new Item("banana","香蕉",3);
Item item3 = new Item("grape","葡萄",6);
items.add(item1);
items.add(item2);
items.add(item3);

List<Order> orders = new ArrayList<Order>();
Order order1 = new Order("order001",new Date(),items);
orders.add(order1);

Address address = new Address("888888","深圳科技园xx");

Customer customer = new Customer("1001","张三",address,orders);

return customer;
}

private static void write(Customer customer,String filePath) throws Exception{
File file = new File(filePath);
Serializer serializer = new Persister();
serializer.write(customer,file);
}

private static void read(String filePath) throws Exception{
File file = new File(filePath);

Serializer serializer = new Persister();
Customer customer = serializer.read(Customer.class, file);

print(customer);
}

private static void print(Customer customer){
System.out.println("--"+customer.getCode());
System.out.println("--"+customer.getName());
System.out.println("--"+customer.getAddress().getName());

for(Order order : customer.getOrders()){
System.out.println("----"+order.getCode());
System.out.println("----"+order.getDate());
for(Item item : order.getItems()){
System.out.println("------"+item.getCode());
System.out.println("------"+item.getName());
System.out.println("------"+item.getQuatity());
}
}
}
}


运行结果:

--1001

--张三

--深圳科技园xx

----order001

----Wed Jun 18 09:37:30 CST 2014

------apple

------苹果

------5

------banana

------香蕉

------3

------grape

------葡萄

------6

生成的customerOrder.xml文件

<customer>
<code>1001</code>
<name>张三</name>
<address>
<code>888888</code>
<name>深圳科技园xx</name>
</address>
<orders class="java.util.ArrayList">
<order>
<code>order001</code>
<date>2014-06-18 09:37:30.114 CST</date>
<items class="java.util.ArrayList">
<item>
<code>apple</code>
<name>苹果</name>
<quatity>5</quatity>
</item>
<item>
<code>banana</code>
<name>香蕉</name>
<quatity>3</quatity>
</item>
<item>
<code>grape</code>
<name>葡萄</name>
<quatity>6</quatity>
</item>
</items>
</order>
</orders>
</customer>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: