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...

7,844 Responses

  1. Велозапчасти и ремонт в Москве velosiped-magazin.ru

    Что касается купить недорогой велосипед взрослый Вы попали по верному адресу. Наш интернет магазин является представителем известных компаний, которые делают лучшие модели великов. После приобретения действует гарантия и предлагается платное хранение велосипедов в Москве на холодный период.

  2. Uvsgne表示:

    deltasone online – order generic permethrin order zovirax without prescription

  3. Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
    Мы предлагаем:ремонт бытовой техники в уфе
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  4. Alica表示:

    Five Qualities That People Search For In Every French Style Fridge
    Freezer french door fridge freezer sale (Alica)

  5. I blog quite often and I really thank you for your content. This great article has really peaked my interest. I’m going to bookmark your blog and keep checking for new information about once a week. I subscribed to your RSS feed as well.

  6. You’ll Never Be Able To Figure Out This Adult Adhd Assessments’s Benefits
    adult Adhd assessment

  7. Профессиональный сервисный центр по ремонту посудомоечных машин с выездом на дом в Москве.
    Мы предлагаем: срочный ремонт посудомоечной машины
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  8. Профессиональный сервисный центр по ремонту посудомоечных машин с выездом на дом в Москве.
    Мы предлагаем: диагностика посудомоечной машины цена
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  9. Xevgjd表示:

    order isotretinoin 40mg sale – buy deltasone 10mg pill order deltasone 20mg for sale

  10. Are You Tired Of Private ADHD Assessment? 10 Inspirational Sources To Bring Back
    Your Love adhd assessment scotland private – bookmarkangaroo.com,

  11. Профессиональный сервисный центр по ремонту планшетов в том числе Apple iPad.
    Мы предлагаем: ремонт планшетов ipad в москве
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  12. Jamesruigo表示:

    http://canadapharma.shop/# canada drug pharmacy

  13. RobertWAisa表示:

    medication from mexico pharmacy mexican pharmacy medicine in mexico pharmacies

  14. Jamesruigo表示:

    http://mexicanpharma.icu/# mexico drug stores pharmacies

  15. RogerTut表示:

    safe canadian pharmacy: Online medication home delivery – safe canadian pharmacies

  16. Профессиональный сервисный центр по ремонту гироскутеров в Москве.
    Мы предлагаем: сервисный центр по ремонту гироскутеров в москве
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  17. Профессиональный сервисный центр по ремонту моноблоков в Москве.
    Мы предлагаем: вызвать мастера по ремонту моноблоков
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  18. i would really love to play card games, it is also a very addictive game,,

  19. I’m usually to blogging and i really recognize your content. The article has actually peaks my interest. I am going to bookmark your website and hold checking for brand new information.

  20. Профессиональный сервисный центр по ремонту кондиционеров в Москве.
    Мы предлагаем: мастер по кондиционерам москва
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  21. Timothystoft表示:

    mexican pharmaceuticals online: best online pharmacies in mexico – reputable mexican pharmacies online

  22. plumber表示:

    I’m impressed, I must say. Actually rarely must i encounter a blog that’s both educative and entertaining, and let me tell you, you have hit the nail within the head. Your concept is outstanding; the pain is an element that too little consumers are speaking intelligently about. I am delighted that we found this within my search for some thing relating to this.

  23. Jamesruigo表示:

    http://mexicanpharma.icu/# best online pharmacies in mexico

  24. 11 Strategies To Completely Redesign Your ADHD Private Assessment
    UK Private Adhd Assessment Leeds (Psychiatristinuk69052.Like-Blogs.Com)

  25. Jamesruigo表示:

    http://indiadrugs.pro/# reputable indian pharmacies

  26. Профессиональный сервисный центр по ремонту бытовой техники с выездом на дом.
    Мы предлагаем: ремонт бытовой техники в тюмени
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  27. RogerTut表示:

    world pharmacy india: Indian pharmacy international shipping – world pharmacy india

  28. Профессиональный сервисный центр по ремонту гироскутеров в Москве.
    Мы предлагаем: сервис гироскутеров в москве
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  29. Профессиональный сервисный центр по ремонту моноблоков в Москве.
    Мы предлагаем: замена матрицы моноблока цена
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

  30. Профессиональный сервисный центр по ремонту кондиционеров в Москве.
    Мы предлагаем: ремонт кондиционеров в квартире в москве
    Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!

發佈留言

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