1. 程式人生 > >JAVA物件與XML的互轉

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("
[email protected]
"); 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("[email protected]");
        article.setTitle("XML概述");
        
        Article article2 = new Article();
        article2.setAuthor("Tom");
        article2.setDate("2014-10-21");
        article2.setEmail("[email protected]");
        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), 不然會報錯的。。。

       是不是很簡單呢,小夥伴們也趕緊試試吧。。。

相關推薦

java物件XML

1. 定義XML對應的java實體類(可巢狀) import java.io.Serializable; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorT

JAVA beanXML的利器---XStream

pub 普通 ati mat his cit true 是我 package 最近在項目中遇到了JAVA bean 和XML互轉的需求, 本來準備循規蹈矩使用dom4j忽然想起來之前曾接觸過的XStream, 一番研究豁然開朗,利器啊利器, 下來就XStream的一些用法與

利用JAXB對java物件xml

好一段時間沒寫部落格了,一直出差得有半年多時間了吧!其實還是懶,哈哈 最近算是轉行做大資料了,還好有個前輩帶帶,應該是比不少人少走彎路吧! 這東西主要學的是思想 今天寫個java物件和xml互轉的(專案的要用到xml的配置檔案) 主要是用JAXB實現java

Xstream 物件xml

需要         jar : xtream.jar 第一步:工具類 public class XStreamWrapper {  private XStream xstream;  public XStreamWrapper() {     xstream = new

JAVA物件XML

       前幾天學習了用Marshaller 來實現Java物件與xml的互轉,現在記錄一下筆記,以便以後查閱。        Marshaller 類負責管理將 Java 內容樹序列化回 XML 資料的過程。        話不多說,直接上程式碼。        首先

java 中文unicode

true format param cte _id col rms AI deb public class FontUtil { public static void main(String[] args) { System.out.pr

php數組xml

php數組與xml互轉類代碼: /** * @desc:xml與array互轉 * @author [Lee] <[<[email protected]>]> * @property * data 傳入的數據 * @method * arraytoxml 數組轉xml

java 中 Object XML ,最終選擇Xstream

前言 spring boot 2.0.0 RELEASE maven 3.5.0 專案中需要進行 Object 與 XML 的互轉。為此嘗試了幾個互轉工具,進行記錄。 耗費了一天的時間,將FasterXML、Caster、JAXB、Xstream都嘗試了一遍

JAVA STRINGINTEGER

1、String轉Integer String a = “123”; Integer b = Integer.parseInt(a); 2、Integer轉String Integer a = 123; String b = a.toString();

c# 託管物件InPtr

//託管物件轉interPtr GCHandle thisHandle = GCHandle.Alloc(this); nGCHandle.ToIntPtr(thisHandle); //interPtr轉非託管物件 GCHandle gcUser = GCHandle.FromInt

Java字串日期

Java字串與日期的相互轉換   1.字串轉日期 字串的格式與日期的格式一定要對應,並且字串格式可以比日期格式多,但不能少,數字大小不自動計算日期。其中需要主要大小寫 年yyyy 月MM 日dd 時HH 分mm 秒ss 毫秒SS String str = "2018/

序列化JavaBeanxml

序列化和反序列化: 一、序列化和反序列化的概念   把物件轉換為位元組序列的過程稱為物件的序列化。   把位元組序列恢復為物件的過程稱為物件的反序列化。   物件的序列化主要有兩種用途:   1) 把物件的位元組序列永久地儲存到硬碟上,通常存放在一

java stringunicode

1.string轉unicode public static String string2Unicode(String string) { StringBuffer unicode = new StringBuffer();

jsonxml

一、簡介 本文介紹json串與xml串相互轉換的一種方式。 二、開發步驟 1、新增maven依賴 <dependency> <groupId>org.json<

DataSet(DataTable)XML

using System; using System.Data; using System.IO; using System.Xml; using System.

StringXML以及從XML取節點值並修改

讀取xml檔案生成Document物件 Document轉換成String型別串 String串轉成xml 已知xml節點取節點值 已知xml節點修改節點值 一個xml檔案: <?xml version="1.0" encoding="UTF-8"

XStream轉換java物件XML

XStream是一個Java物件和XML相互轉換的工具,很好很強大。提供了所有的基礎型別、陣列、集合等型別直接轉換的支援。因此XML常用於資料交換、物件序列化(這種序列化和Java物件的序列化技術有著本質的區別)。 XStream物件相當Java物件和XML之間的轉換器

Map物件JavaBean,ListList

直接上程式碼。 下面的將map轉為JavaBean用到了泛型,適應性更強。 將JavaBean轉為map物件還未做優化。第三個方法和第四個方法是對前兩個方法的升級。//關鍵包引用列舉一下 import com.sun.org.apache.commons.beanutils.

java bytechar原理

 一、位元組和unicode Java核心是unicode的,就連class檔案也是,但是很多媒體,包括檔案/流的儲存方式是使用位元組流的。因此Java要對這些位元組流經行轉化。 char是unicode的,而byte是位元組。Java中 byte/char互轉的函式在sun.io的包中間有。其中ByteTo

java stringbyte[]

string 轉byte[] 如1122轉{0x11,0x12} public static byte[] hexString2Bytes(String s) {         byte[] bytes;         bytes = new byte[s.lengt