Java針對XML檔案的操作大集合

XML是工作上常用到的資料交換格式,會需要利用JAVA進行XML資料的新增、修改或刪除,這裡把相關的方法記錄下來。

下述範例會存取在C:\Projects\Javas\中的sample.xml檔,而檔案中已經有以下的內容:

<?xml version="1.0" encoding="utf-8"?>

<root> 
  <item> 
    <productID>10001</productID>  
    <productName>產品名稱1</productName>  
    <productPrice>10</productPrice> 
  </item>
  <item> 
    <productID>10002</productID>  
    <productName>產品名稱2</productName>  
    <productPrice>20</productPrice> 
  </item>  
  <item> 
    <productID>10003</productID>  
    <productName>產品名稱3</productName>  
    <productPrice>30</productPrice> 
  </item>
</root>

利用Java存取XML我選用的Library是dom4j,可參考官網的介紹,以下是JAVA存取的程式範例:

package CDIT.stanley;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;

import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


public class dom4jXMLFullSample {
	
	//新增XML Node內容
	public static String XMLAppendNode(String xmlFilePath, String productID, String productName, String productPrice){
		
		String appendStatus = "0";
		
		try {
			
			SAXReader reader = new SAXReader();
			Document document = reader.read(xmlFilePath);
			Element root = document.getRootElement();
			Element item = root.addElement("item");
			
			item.addElement("productID").setText(productID);
			item.addElement("productName").setText(productName);
			item.addElement("productPrice").setText(productPrice);
			
			OutputFormat format = OutputFormat.createPrettyPrint();
		    format.setEncoding("utf-8");
		    XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFilePath),format);
		    writer.write(document);
		    writer.close();
		    appendStatus = "1";
			
		} catch (DocumentException e) {
			return appendStatus;
		} catch (UnsupportedEncodingException e) {
			return appendStatus;
		} catch (FileNotFoundException e) {
			return appendStatus;
		} catch (IOException e) {
			return appendStatus;
		}
		return appendStatus;
			
	}
	
	//修改XML Node內容
	public static String XMLChangeNodeValue(String xmlFilePath, String productID, String productName, String productPrice){
		
		String updateStatus = "0";
		
		try {
			SAXReader reader = new SAXReader();
			Document document = reader.read(xmlFilePath);
			Element root = document.getRootElement();
			@SuppressWarnings("rawtypes")
			Iterator it = root.elementIterator();
	        
			while (it.hasNext()) {
	            Element element = (Element) it.next();	            
	            if(productID.equals(element.elementText("productID"))){	            	
	    		    try {
	    		    	
		            	element.element("productName").setText(productName);
		            	element.element("productPrice").setText(productPrice);
		            	
		            	OutputFormat format = OutputFormat.createPrettyPrint();
		    		    format.setEncoding("utf-8");
		    		    XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFilePath),format);
						writer.write(document);
						writer.close();
						updateStatus = "1";
					} catch (IOException e) {
						return updateStatus;
					}	    		   
				}
	        }
			return updateStatus;
		} catch (DocumentException e) {
			return updateStatus;
		}

	}
	
	//刪除XML Node
	public static String XMLRemoveNode(String xmlFilePath , String productID){
		String removeStatus = "0";
		
		try {
			SAXReader reader = new SAXReader();
			Document document = reader.read(xmlFilePath);
			Element root = document.getRootElement();
			@SuppressWarnings("rawtypes")
			Iterator it = root.elementIterator();
	        
			while (it.hasNext()) {
	            Element element = (Element) it.next();
	            if(productID.equals(element.elementText("productID"))){  	
	    		    try {
		            	element.element("item");
		            	element.detach();
		            	
		            	OutputFormat format = OutputFormat.createPrettyPrint();
		    		    format.setEncoding("utf-8");
		    		    XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFilePath),format);
						writer.write(document);
						writer.close();
						removeStatus = "1";
					} catch (IOException e) {
						return removeStatus;
					}
				}	            
	        }
			return removeStatus;
		} catch (DocumentException e) {
			return removeStatus;
		}

	}
	
	public static void main (String[] args){
		String xmlFilePath = "C:\\Projects\\Javas\\sample.xml";
		//新增
		XMLAppendNode(xmlFilePath , "10004", "產品名稱4", "40");
		//修改
		XMLChangeNodeValue (xmlFilePath , "10001", "測試修改", "100");
		//刪除
		XMLRemoveNode (xmlFilePath , "10002");
	}
}

上述程式進行完後,會將原本的XML檔變成如下的內容:

<?xml version="1.0" encoding="utf-8"?>

<root> 
  <item> 
    <productID>10001</productID>  
    <productName>測試修改</productName>  
    <productPrice>100</productPrice> 
  </item>  
  <item> 
    <productID>10003</productID>  
    <productName>產品名稱3</productName>  
    <productPrice>30</productPrice> 
  </item>  
  <item> 
    <productID>10004</productID>  
    <productName>產品名稱4</productName>  
    <productPrice>40</productPrice> 
  </item> 
</root>

You may also like...

15,857 Responses

  1. Peterclada表示:

    kamagra 100mg prix Kamagra pharmacie en ligne Kamagra pharmacie en ligne

  2. BradleyJaire表示:

    Kamagra Oral Jelly pas cher: achat kamagra – Kamagra pharmacie en ligne

  3. Шторы для коттеджа своими руками
    шторы для коттеджа шторы для коттеджа .

  4. Robertfap表示:

    https://pharmafst.shop/# pharmacie en ligne france fiable

  5. BillieLet表示:

    Acheter Cialis: Acheter Cialis – Cialis generique prix tadalmed.shop

  6. Индивидуальный пошив штор, профессиональный пошив штор..
    Идеальные шторы на заказ, с гарантией качества..
    Эксклюзивные решения в пошиве штор, с использованием лучших тканей..
    Дизайнерские шторы на заказ, закажите онлайн..
    Профессиональный пошив штор с монтажом, под ключ..
    Лучшие ткани для пошива штор, гарантия качества..
    Дизайнерские шторы на любой интерьер, Обратитесь сегодня..
    Пошив штор на заказ, от ведущих мастеров..
    Пошив штор из эксклюзивных тканей, по индивидуальному проекту..
    Выберите качественный пошив штор, звоните прямо сейчас..
    Пошив штор высокого качества, по вашему дизайну..
    Премиум пошив штор для интерьера, по индивидуальному дизайну..
    Индивидуальный стиль ваших окон, под ключ..
    Индивидуальный дизайн штор, с индивидуальным подходом..
    Пошив штор для любого помещения, подчеркивающих ваш стиль..
    Профессиональный пошив штор, от лучших мастеров..
    Пошив штор по вашим пожеланиям, от замеров до монтажа..
    пошив штор пошив штор . “Ткацкий”

  7. Peterclada表示:

    Pharmacie en ligne Cialis sans ordonnance Cialis en ligne cialis prix tadalmed.com

  8. BradleyJaire表示:

    pharmacie en ligne france fiable: pharmacie en ligne – pharmacie en ligne france livraison internationale pharmafst.com

  9. Robertfap表示:

    https://tadalmed.shop/# Cialis generique prix

  10. BillieLet表示:

    Achat mГ©dicament en ligne fiable: Pharmacies en ligne certifiees – pharmacie en ligne pas cher pharmafst.com

  11. Peterclada表示:

    Kamagra Oral Jelly pas cher Kamagra Oral Jelly pas cher kamagra livraison 24h

  12. BradleyJaire表示:

    cialis sans ordonnance: cialis generique – Acheter Viagra Cialis sans ordonnance tadalmed.shop

  13. Персонализированные шторы по лучшим ценам
    сшить шторы на заказ сшить шторы на заказ . “Ткацкий”

  14. Robertfap表示:

    https://tadalmed.com/# Acheter Cialis 20 mg pas cher

  15. BillieLet表示:

    kamagra 100mg prix: Achetez vos kamagra medicaments – Achetez vos kamagra medicaments

  16. Peterclada表示:

    п»їpharmacie en ligne france pharmacie en ligne pharmacie en ligne pharmafst.shop

  17. BradleyJaire表示:

    kamagra gel: Achetez vos kamagra medicaments – kamagra livraison 24h

  18. Robertfap表示:

    http://tadalmed.com/# Cialis sans ordonnance 24h

  19. BillieLet表示:

    Cialis sans ordonnance pas cher: Achat Cialis en ligne fiable – Cialis sans ordonnance 24h tadalmed.shop

  20. Prokarniz表示:

    Умные деревянные жалюзи с электроприводом
    Деревянные горизонтальные жалюзи с электроприводом Деревянные горизонтальные жалюзи с электроприводом . Prokarniz

  21. Peterclada表示:

    Kamagra pharmacie en ligne kamagra livraison 24h kamagra en ligne

  22. Закажите шторы на любую комнату
    сшить шторы на заказ сшить шторы на заказ . Ткацкий

  23. BradleyJaire表示:

    Cialis sans ordonnance pas cher: Tadalafil 20 mg prix sans ordonnance – cialis generique tadalmed.shop

  24. Francisfruig表示:

    посетить веб-сайт читайте тут

  25. Stephendat表示:

    Оснащение лесной техники – Обмануть Платон, Контроль температуры

發佈回覆給「Peterclada」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。