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,841 Responses

  1. WalterCherm表示:

    A true gem in the international pharmacy sector.
    https://lisinoprilpharm24.top/
    Read here.

  2. Here’s A Few Facts Concerning Assessment For Mental Health Private Mental Health Assessment Near Me

  3. Jasonzitte表示:

    I trust them with all my medication needs.
    where can i get lisinopril without a prescription
    Providing international caliber services consistently.

  4. Victorprima表示:

    Always ahead of the curve with global healthcare trends.
    how can i get generic lisinopril prices
    Everything information about medication.

  5. Victorprima表示:

    Appreciate their commitment to maintaining global healthcare standards.
    cost of generic cytotec pill
    The children’s section is well-stocked with quality products.

  6. What’s The Ugly Truth About Pragmatic 프라그마틱 게임

  7. Rod表示:

    It’s The Next Big Thing In Buy German Shepherd reinrassiger deutscher schäferhund kaufen (Rod)

  8. WalterCherm表示:

    They have an extensive range of skincare products.
    https://lisinoprilpharm24.top/
    Their commitment to international standards is evident.

  9. Jasonzitte表示:

    Learn about the side effects, dosages, and interactions.
    can you get cheap clomid price
    A beacon of reliability and trust.

  10. Kategorię A1表示:

    What Is The Secret Life Of Motorcycle Driving License Kategorię A1

  11. WalterCherm表示:

    Always greeted with warmth and professionalism.
    https://clomidpharm24.top/
    Their online refill system is straightforward.

  12. Jasonzitte表示:

    Their commitment to global excellence is unwavering.
    what kind of medicine is gabapentin
    Their international collaborations benefit patients immensely.

  13. www.1v34.com表示:

    Are You Tired Of High-Quality Factory-Made Pallets? 10 Inspirational Resources To Revive Your Passion where to
    get pallets​ (http://www.1v34.com)

  14. Victorprima表示:

    Trusted by patients from all corners of the world.
    can i purchase cheap clomid price
    I trust them with all my medication needs.

  15. Victorprima表示:

    Medicament prescribing information.
    can you get cheap cytotec pill
    The pharmacists always take the time to answer my questions.

  16. WalterCherm表示:

    Everything what you want to know about pills.
    https://cipropharm24.top/
    I appreciate their late hours for those unexpected needs.

  17. Jasonzitte表示:

    They keep a broad spectrum of rare medications.
    gabapentin tablet
    A trusted voice in global health matters.

  18. Jasonzitte表示:

    Their health awareness programs are game-changers.
    how to buy generic clomid without rx
    Read information now.

  19. WalterCherm表示:

    The best place for health consultations.
    https://cytotecpharm24.top/
    Always a seamless experience, whether ordering domestically or internationally.

  20. Victorprima表示:

    They offer great recommendations on vitamins.
    buy cipro without rx
    Their international collaborations benefit patients immensely.

  21. What’s The Current Job Market For Cheap Pushchairs Professionals?

    cheap pushchairs

  22. kovry_kqEi表示:

    Ковры, которые добавят стиль в ваш интерьер, красивый.
    Лучшие варианты ковров для вашего дома, приобретите.
    Ковры ручной работы, найдите.
    Ковры, которые подчеркнут вашу индивидуальность, уют.
    Безопасные и яркие ковры для детской, функциональность.
    Традиционные и современные ковры, выберите.
    Ковры для офиса, добавьте.
    Практичные варианты ковров для дома, узнайте.
    Как выбрать идеальный ковер?, главные советы.
    Защита от холода с помощью ковров, откройте.
    Тенденции в мире ковров, следите.
    Ковры для загородного дома, уникальные стили.
    Ковры в интерьере: вдохновение, исследуйте.
    Разнообразие стилей ковров, найдите.
    Ковры для спальни, мягкие текстуры.
    Качество и стиль от лучших производителей, выбирайте.
    Выбор ковров для домашних любимцев, дизайны.
    Теплые ковры для холодных зим, выбирайте.
    Ковры для создания зонирования, функции.
    стандартные размеры ковра стандартные размеры ковра .

  23. Victorprima表示:

    Their global outlook is evident in their expansive services.
    gabapentin for tooth extraction pain
    Actual trends of drug.

  24. kovry_veEi表示:

    Ковры, которые добавят стиль в ваш интерьер, декор.
    Ковры, которые преобразят ваш интерьер, по акции.
    Ковры для стильного интерьера, выбирайте.
    Декорируйте пространство с помощью ковров, уют.
    Ковры для игровой зоны, разнообразие.
    Ковры в восточном стиле, откройте.
    Эстетика ковров в офисе, профессионализм.
    Неприхотливые ковры для занятых людей, свой идеальный вариант.
    Советы по выбору ковра, открывайте.
    Ковры для холодных полов, необходимый стиль.
    Актуальные стили и дизайны ковров, декор.
    Ковры для загородного дома, уникальные стили.
    Как сделать ваш интерьер уникальным с коврами, узнайте.
    Ковры: от классики до модерна, мир ковров.
    Создайте атмосферу уюта в спальне, приятные цвета.
    Премиальные ковры для вашего интерьера, инвестируйте.
    Мои любимые ковры для зоолюбителей, долговечные.
    Ковры, которые сохраняют тепло, уют.
    Как использовать ковры для зонирования, откройте.
    детские ковры https://kovry-v-moskve.ru/ .

  25. Jasonzitte表示:

    They always have valuable advice on medication management.
    buying cipro no prescription
    Love their spacious and well-lit premises.

  26. Alica表示:

    What’s The Job Market For Treadmills At Home Professionals Like?
    treadmills at home (Alica)

  27. Nikole表示:

    10 Situs Togel Terpercaya Tips All Experts Recommend 10 situs togel
    terpercaya (Nikole)

  28. Guide To Female ADHD Symptoms: The Intermediate Guide
    On Female ADHD Symptoms female Adhd symptoms

  29. Jasonzitte表示:

    I always feel valued and heard at this pharmacy.
    can you buy generic clomid without a prescription
    Trust and reliability on a global scale.

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

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