1. 程式人生 > >java讀取xml檔案並轉換成物件,並進行修改

java讀取xml檔案並轉換成物件,並進行修改

1.首先要寫工具類,處理讀取和寫入xml檔案使用的工具。XMLUtil.java

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.StringWriter;

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

/**   
 * 封裝了XML轉換成object,object轉換成XML的程式碼   
 *    
 * @author mscall
 *    
 */  
public class XMLUtil {
	/**   
     * 將物件直接轉換成String型別的 XML輸出   
     *    
     * @param obj   
     * @return   
     */    
    public static String convertToXml(Object obj) {    
        // 建立輸出流    
        StringWriter sw = new StringWriter();    
        try {    
            // 利用jdk中自帶的轉換類實現    
            JAXBContext context = JAXBContext.newInstance(obj.getClass());    
    
            Marshaller marshaller = context.createMarshaller();    
            // 格式化xml輸出的格式    
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,    
                    Boolean.TRUE);    
            marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); 
            // 將物件轉換成輸出流形式的xml    
            marshaller.marshal(obj, sw);    
        } catch (JAXBException e) {    
            e.printStackTrace();    
        }    
        return sw.toString();    
    }    
    
    /**   
     * 將物件根據路徑寫入指定的xml檔案裡
     *    
     * @param obj   
     * @param path   
     * @return   
     */    
    public static void convertToXml(Object obj, String path) {    
        try {    
            // 利用jdk中自帶的轉換類實現    
            JAXBContext context = JAXBContext.newInstance(obj.getClass());    
    
            Marshaller marshaller = context.createMarshaller();    
            // 格式化xml輸出的格式    
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,    
                    Boolean.TRUE);    
            marshaller.setProperty(Marshaller.JAXB_ENCODING, "GBK");
            // 將物件轉換成輸出流形式的xml    
            // 建立輸出流    
            FileWriter fw = null;    
            try {    
                fw = new FileWriter(path);    
            } catch (IOException e) {    
                e.printStackTrace();    
            }    
            marshaller.marshal(obj, fw);    
        } catch (JAXBException e) {    
            e.printStackTrace();    
        }    
    }    
    
    /**   
     * 將String型別的xml轉換成物件   
     */    
    public static Object convertXmlStrToObject(Class<?> clazz, String xmlStr) {    
        Object xmlObject = null;    
        try {
            JAXBContext context = JAXBContext.newInstance(clazz);    
            // 進行將Xml轉成物件的核心介面    
            Unmarshaller unmarshal = context.createUnmarshaller();
            StringReader sr = new StringReader(xmlStr);    
            xmlObject = unmarshal.unmarshal(sr);
        } catch (Exception e) {
            e.printStackTrace();    
        }    
        return xmlObject;    
    }    
    
    /**   
     * 將file型別的xml轉換成物件   
     */    
    public static Object convertXmlFileToObject(Class<?> clazz, String xmlPath) {    
        Object xmlObject = null;    
        try {
            JAXBContext context = JAXBContext.newInstance(clazz);    
            Unmarshaller unmarshaller = context.createUnmarshaller();      
            InputStreamReader isr=new InputStreamReader(new FileInputStream(xmlPath),"GBK");
            xmlObject = unmarshaller.unmarshal(isr);    
        } catch (Exception e) {    
            e.printStackTrace();    
        }    
        return xmlObject;    
    }    
}

2.測試寫入

public static void test(){
	Users users = new Users(); 
	User u = new User(); 
	u.setUsername("admin");
	u.setPassword("123"); 
	List<User> lus = new ArrayList<>(); 
	lus.add(u); 
	users.setUserList(lus);
	try {
		XMLUtil.convertToXml(users, "C:/XML/users.xml");
	} catch (Exception e1) {
		e1.printStackTrace();
	}
 }

3.測試讀
Users users = (Users) XMLUtil.convertXmlFileToObject(Users.class, "C:/XML/Users.xml");

4.xml檔案

<?xml version="1.0" encoding="GBK" standalone="yes"?>
<users>
    <user>
        <username>admin0</username>
        <password>123</password>
    </user>
    <user>
        <username>admin</username>
        <password>123</password>
    </user>
</users>

end ------------------------------------------------------------------------------------------------------------------------


相關推薦

java讀取xml檔案轉換物件進行修改

1.首先要寫工具類,處理讀取和寫入xml檔案使用的工具。XMLUtil.java import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import j

如何用java讀取csv檔案指定行列的資料將csv中資料元素隨機置零後儲存到另一個csv檔案

這個流程可以大致分為兩步驟:1.讀取csv檔案中的資料2.生成隨機數,將csv的資料隨機置零,將新生成的檔案儲存到新的csv中一、首先我們進行第一步:讀取csv中的檔案:讀取函式格式為public static double readin(int row,int col)

java讀取xml檔案資料

import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import o

java-讀取txt檔案中的第一行URL進行請求得出響應

背景:其實我是拿來練手的。想寫程式碼而已,並沒有啥特殊的目地 我的需求: 有一個url.txt檔案,裡面裝的一行一行的URL 我要請求每一行URL,然後去請求,拿到第一個請求的響應結果,程式碼很簡單,網上一搜遍地都是,我加工了一下。 整合了 直接上碼吧! p

android將pdf檔案轉換Bitmap將bitmap以圖片的 方式儲存到相簿。

背景: 公司專案要求使用者可以在手機端檢視發票並將發票已圖片的形式儲存到相簿,以便列印,問題來了,因為發票是.pdf,android不支援直接檢視pdf,所以要下載下來然後在手機上看,當時的需求是要下載下來在App上檢視,經查詢,使用了第三方的外掛==》PDFView, PDFView基於G

java讀取xml檔案的四種方法

1 import javax.xml.parsers.SAXParser; 2 import javax.xml.parsers.SAXParserFactory; 3 4 import org.xml.sax.Attributes; 5 import org.x

java讀取XML檔案內容的方法

xml檔案內容: <?xml version="1.0" encoding="UTF-8"?> <DigitalEnvelope>     <Channel id="BANK" privatekey="A1JTQe4Q94krAfR1POTxY

java讀取XML檔案的四種方式及比較

1)DOM(JAXP Crimson解析器)          DOM是用與平臺和語言無關的方式表示XML文件的官方W3C標準。DOM是以層次結構組織的節點或資訊片斷的集合。這個層次結構允許開發人員在樹中尋找特定資訊。分析該結構通常需要載入整個文件和構造層次結構,然後才

Java 讀取任意shapefile的所有欄位插入到MongoDB資料庫(Spring Boot)

文章目錄 Java 讀取任意shapefile的所有欄位,並插入到MongoDB資料庫(Spring Boot) 1. 統一返回結果封裝 2. shp檔案資料實體封裝 3. 核心程式碼

list 轉換dictionary統計詞頻

counter times 詞頻 ont mil mes 轉換成 new size >>> from collections import Counter>>> Counter([‘apple‘,‘red‘,‘apple‘,‘red‘,‘

君子性非異也 善假於物也(三) selenium+phantomjs java將淘寶網頁轉換圖片支援下拉重新整理

1.本地安裝phantomjs,並且將bin加入環境變數path中2.新建java專案,selenium和phantomjs的maven如下,driver有很多種,比如chromedriver等等,phtomjs作為無頭瀏覽器做動態爬蟲專案挺爽的<dependency&

java讀取excel 檔案讀取到的資料轉換javabean物件

javaBean物件public class AcademicaChievements { private Integer aid; private String number; private String sname; private String award_

java讀取json檔案轉換為String

import java.io.*; public class Output { //測試 public static void main(String[] args){ String json = "null"; try { json = readJsonData("I

關於使用JAXB讀取xml文件轉換java物件出現非法註解異常

java類如下: import java.io.Serializable; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; //該註解表示xml文件

javaxml檔案表建立及讀取環境搭建採用DOM4J完成XML檔案匯入到資料庫

    java一種簡單的解析xml方法是用DOM進行解析, dom4j是一個Java的XML API,類似於jdom,用來讀寫XML檔案的,dom4j用於處理xml是很常用的技術,本篇部落格介紹xml檔案表建立及讀取環境搭建並採用DOM4J完成XML檔案匯入到資料庫。

Java讀取XML檔案生成XML格式的字串解析這個字串

由於最近要用的是XML格式的字串,而不用寫到檔案中,所以對原始程式碼進行了修改如下: 要讀的xml檔案 <?xml version="1.0" encoding="GB2312"?> <學生花名冊> <學生 性別 = "男">

java 實現 線上開啟word 檔案轉換 pdf 檔案

一、需求     線上把 word 檔案轉換成 pdf 檔案。 二、方案   &nb

java讀取excel檔案內容讀取到的內容寫入到另一檔案

需要匯入的jar包下載地址https://pan.baidu.com/s/16cTpUfx0KvKkbGYkXAUKMA 程式碼:ReadExcel.java //信1605-3 20163432 張運濤 package domain; import java.io.File; im

Java讀取XML配置檔案

1.定義webConfiguration.xml檔案(名字隨取) 2.定義對應配置檔案實體類 import java.io.Serializable;//實現序列化介面是為方便轉成檔案,對應JSON public class WebConfiguratinEntity implements

java讀取txt檔案解析其內容

package readtext;/* @author wb @great forever i think,therefor i am */ import java.io.BufferedReader; import java.io.FileInputStream; import java