JAVA对象与XML的互转

       前几天学习了用Marshaller 来实现Java对象与xml的互转,现在记录一下笔记,以便以后查阅。

       Marshaller 类负责管理将 Java 内容树序列化回 XML 数据的过程。

       话不多说,直接上代码。

       首先这里需要建立两个类  Article  和  ArticleList  , 这就是需要序列化到XML的对象。。注意XmlRootElement注解

     

package object2XML;

import javax.xml.bind.annotation.XmlRootElement;

   @XmlRootElement(name="article")  
     public class Article{  
      private String title;  
      private String author;  
      private String email;  
     private String date;
	 public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getDate() {
		return date;
	}
	public void setDate(String date) {
		this.date = date;
	}  
     
}  


   

package object2XML;

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

import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="articleList")
public class ArticleList {
   List<Article> articleList = new ArrayList<Article>();

public List<Article> getArticleList() {
	return articleList;
}

public void setArticleList(List<Article> articleList) {
	this.articleList = articleList;
}
   
}


 

     然后开始Java对象和XML的互转。。。代码很简单,就不多说了。。

     首先是Object2XML

package object2XML;
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class Object2XML {
	public static void main(String [] args){
	      File xmlFile = new File("G:\\test.xml"); 
	      JAXBContext context ;  //声明JAXBContext上下文对象
	      try{ //通过指定的类创建上下文对象
	             context= JAXBContext.newInstance(Article.class);
	             Marshaller marshaller =context.createMarshaller();
	             Article article = new Article();
	             article.setAuthor("Jerry");
	             article.setDate("2014-9-21");
	             article.setEmail("Jerry@yahoo.com");
	             article.setTitle("XML概述");
	             //将Java对象转换成xml文件
	             marshaller.marshal(article,xmlFile);
	      }catch(JAXBException e){
	             e.printStackTrace();
	      }
	}

}

         然后 XML2Object

       

package object2XML;

import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class XML2Object {

	/**
	 * @param args
	 * @throws JAXBException 
	 */
	public static void main(String[] args) throws JAXBException {
		// TODO Auto-generated method stub
		 JAXBContext context ;  //声明JAXBContext上下文对象
		 File xmlFile = new File("G:\\test.xml");   
		 context =JAXBContext.newInstance(Article.class);  
		 Unmarshaller unmarshaller = context.createUnmarshaller();  
		 Article article= (Article)unmarshaller.unmarshal(xmlFile);  
		 System.out.println(article.getAuthor());
		 System.out.println(article.getDate());
		 System.out.println(article.getEmail());
		 System.out.println(article.getTitle());
		 
	}

}


        然后是List和XML的互转。。

        List2XML

package object2XML;

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

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

public class List2XML {

	/**
	 * @param args
	 * @throws JAXBException 
	 */
	public static void main(String[] args) throws JAXBException {
		// TODO Auto-generated method stub
		File xmlFile = new File("G:\\test2.xml"); 
	    JAXBContext context ;  //声明JAXBContext上下文对象
	    context= JAXBContext.newInstance(ArticleList.class);
        Marshaller marshaller =context.createMarshaller();
        ArticleList articleList = new ArticleList();
        
        Article article = new Article();
        article.setAuthor("Jerry");
        article.setDate("2014-9-21");
        article.setEmail("Jerry@yahoo.com");
        article.setTitle("XML概述");
        
        Article article2 = new Article();
        article2.setAuthor("Tom");
        article2.setDate("2014-10-21");
        article2.setEmail("Jerry@sina.com");
        article2.setTitle("XML概述222");
        
        List<Article> list = new ArrayList<Article> ();
        list.add(article);
        list.add(article2);
        
        articleList.setArticleList(list);
      
        //将Java对象转换成xml文件
        marshaller.marshal(articleList,xmlFile);
	}

}


        然后XML2List

package object2XML;

import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

public class XML2List {

	/**
	 * @param args
	 * @throws JAXBException 
	 */
	public static void main(String[] args) throws JAXBException {
		// TODO Auto-generated method stub

		JAXBContext context ;  //声明JAXBContext上下文对象
		 File xmlFile = new File("G:\\test2.xml");   
		 context =JAXBContext.newInstance(ArticleList.class);  
		 Unmarshaller unmarshaller = context.createUnmarshaller();  
		 ArticleList articleList= ( ArticleList)unmarshaller.unmarshal(xmlFile);
		 System.out.println(articleList.getArticleList().get(0).getAuthor());
		 System.out.println(articleList.getArticleList().get(1).getAuthor());
		
	}

}


        这样就差不多完成了,最后注意一下 对象类注解那里   @XmlRootElement(name="articleList")   这里的name是 articleList  ,对应着从XML转化成list的时候  ArticleList articleList= ( ArticleList)unmarshaller.unmarshal(xmlFile);    必须用相同的名字的对象来接收(articleList), 不然会报错的。。。

       是不是很简单呢,小伙伴们也赶紧试试吧。。。

        最后附上例子的源码  : http://download.csdn.net/detail/y353027520dx/8439617   大家可以直接下载了运行试试看。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值