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

10,494 Responses

  1. The 12 Worst Types Of Accounts You Follow On Twitter mental health assessment at home (http://www.bitsdujour.com)

  2. The 10 Most Terrifying Things About Heating Engineer In Buckingham gas safety check Buckingham

  3. Jamestus表示:

    mexican pharmaceuticals online buying prescription drugs in mexico mexico drug stores pharmacies

  4. Jamesknowl表示:

    https://indianpharmacy.win/# best india pharmacy

  5. Used Mobility Scooters For Sale: A Simple Definition Mobility Scooter For sale near me

  6. 10 Simple Steps To Start The Business You Want To Start Truck Accident Lawyers Business
    Trucking Accident Lawyer

  7. 9 . What Your Parents Teach You About Gas Safety Checks Newport Pagnell gas safety checks Newport Pagnell

  8. ClaytonGauct表示:

    purple pharmacy mexico price list: medicine in mexico pharmacies – mexico drug stores pharmacies

  9. Brianchoky表示:

    https://indianpharmacy.win/# best online pharmacy india

  10. Jamesknowl表示:

    http://mexicanpharmacy.store/# mexican border pharmacies shipping to usa

  11. Выбор номер один – натяжные потолки в Петербурге|Скидки на натяжные потолки в СПб|Лучшие специалисты по натяжным потолкам в Петербурге|Огромный ассортимент натяжных потолков в Санкт-Петербурге|Советы по выбору натяжных потолков в Петербурге|Натяжные потолки в Петербурге для вашего уюта|Современный дизайн с натяжными потолками в Санкт-Петербурге|Идеальные потолки в Петербурге только у нас|Только проверенные потолки в Петербурге у нас|Инновационные технологии для натяжных потолков в СПб|Легко и быстро: установка натяжных потолков в СПб|Идеальный выбор: натяжные потолки в СПб|Инновации и креативность в сфере натяжных потолков в Санкт-Петербурге|Лучшие цены на натяжные потолки в СПб|Дизайнерские потолки в Петербурге: натяжные|Профессиональные консультации по выбору натяжных потолков в СПб|Комфорт и эстетика с натяжными потолками в Санкт-Петербурге|Натяжные потолки в СПб: надежность и качество|Уникальный дизайн вашего потолка: натяжные потолки в Санкт-Петербурге|Плюсы натяжных потолков в Петербурге|Натяжные потолки в СПб: современные технологии и материалы|Премиальный сервис по установке натяжных потолков в СПб|Тенденции в дизайне потолков: натяжные потолки в СПб|Оптимальный выбор: натяжные потолки в Петербурге
    потолок натяжной цена за м2 под ключ https://potolki-spb-1.ru/ .

  12. Brianchoky表示:

    https://canadianpharmacy.win/# northwest canadian pharmacy

  13. Jamesknowl表示:

    http://canadianpharmacy.win/# best canadian pharmacy online

  14. Brianchoky表示:

    http://indianpharmacy.win/# india pharmacy mail order

  15. ClaytonGauct表示:

    indian pharmacy online: indian pharmacy – best online pharmacy india

  16. Jamestus表示:

    buy medicines online in india buy prescription drugs from india cheapest online pharmacy india

  17. LarryHom表示:

    https://canadianpharmacy.win/# canadian pharmacy 365

  18. LarryHom表示:

    https://canadianpharmacy.win/# best canadian pharmacy

  19. ClaytonGauct表示:

    safe canadian pharmacy: canada drugs online review – legitimate canadian pharmacy online

  20. LarryHom表示:

    http://canadianpharmacy.win/# global pharmacy canada

  21. Brianchoky表示:

    https://indianpharmacy.win/# reputable indian pharmacies

  22. Jamestus表示:

    best rated canadian pharmacy best canadian online pharmacy canadian pharmacy

  23. Brianchoky表示:

    https://mexicanpharmacy.store/# п»їbest mexican online pharmacies

  24. 10 Quick Tips About Volvo Car Key Replacement volvo xc90 remote start key fob,
    elearnportal.Science,

  25. What’s The Most Creative Thing Happening With Treadmill Folding treadmill folding treadmill

  26. Brianchoky表示:

    http://canadianpharmacy.win/# safe online pharmacies in canada

  27. Jamesknowl表示:

    http://indianpharmacy.win/# indian pharmacy

  28. Идеальное остекление для балконов в Санкт-Петербурге, предложим оптимальный вариант.
    Профессиональное остекление балконов в Петербурге, по доступным ценам и с гарантией качества.
    Индивидуальное остекление балконов в СПб, с учетом всех пожеланий клиента.
    Надежное остекление балконов в СПб, без скрытых платежей и срочно.
    Остекление балкона под ключ в СПб, со скидками и акциями.
    остекление балконов недорого https://balkon-spb-1.ru/ .

  29. ClaytonGauct表示:

    medication from mexico pharmacy: buying prescription drugs in mexico – mexican drugstore online

發佈留言

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