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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM