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

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

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

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

  4. MauriceGueda表示:

    top 10 online pharmacy in india: indian pharmacy paypal – Online medicine home delivery

  5. Aqsing表示:

    order lioresal online – order feldene 20 mg pills piroxicam pills

  6. MauriceGueda表示:

    mexican border pharmacies shipping to usa: buying prescription drugs in mexico – mexican border pharmacies shipping to usa

  7. RobertMef表示:

    mexico drug stores pharmacies: mexico pharmacies prescription drugs – mexican pharmaceuticals online

  8. 오피表示:

    Your research really makes a difference.오피

  9. You are so cool! I don’t suppose I’ve truly read through anything like that before. So nice to find somebody with a few unique thoughts on this issue. Really.. thanks for starting this up. This website is one thing that is needed on the web, someone with some originality.

  10. ??? ??? ???? ?????? ?? ??? ??????? ????? ????? ????? ?????. ???? ???????? ?????? ?? ????? ????? ?????.

  11. ArthurKib表示:

    https://indianpharmacy.company/# mail order pharmacy india

  12. Spot up with this write-up, I truly think this website requirements a lot more consideration. I’ll oftimes be again to read additional, thank you that info.

  13. Если вы искали где отремонтировать сломаную технику, обратите внимание – ремонт бытовой техники в новосибирске

  14. Если вы искали где отремонтировать сломаную технику, обратите внимание – техпрофи

  15. RobertMef表示:

    purple pharmacy mexico price list: mexican mail order pharmacies – mexican online pharmacies prescription drugs

  16. RobertMef表示:

    india pharmacy: indian pharmacy online – best online pharmacy india

  17. Magnificent site. A lot of helpful information here. I am sending it to some friends ans also sharing in delicious. And of course, thank you in your effort!

  18. Если вы искали где отремонтировать сломаную технику, обратите внимание – ремонт цифровой техники новосибирск

  19. Josephfub表示:

    best india pharmacy buy medicines online in india india pharmacy

  20. MauriceGueda表示:

    mexico drug stores pharmacies: medicine in mexico pharmacies – mexican pharmaceuticals online

  21. RobertMef表示:

    buying prescription drugs in mexico online: medicine in mexico pharmacies – buying prescription drugs in mexico online

  22. RobertMef表示:

    indian pharmacy: п»їlegitimate online pharmacies india – mail order pharmacy india

  23. Если вы искали где отремонтировать сломаную технику, обратите внимание – ремонт бытовой техники в нижнем новгороде

  24. Patio Door Track Repair Techniques To Simplify Your Daily Life
    Patio Door Track Repair Technique Every Person Needs To Know patio Door track repair

  25. Если вы искали где отремонтировать сломаную технику, обратите внимание – профи тех сервис нижний новгород

  26. Jknszv表示:

    cheap diclofenac generic – buy nimotop generic buy nimotop without prescription

  27. Josephfub表示:

    best india pharmacy indian pharmacies safe indianpharmacy com

  28. Если вы искали где отремонтировать сломаную технику, обратите внимание – сервис центр в нижнем новгороде

  29. ArthurKib表示:

    https://indianpharmacy.company/# buy prescription drugs from india

發佈留言

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