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

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

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

  3. MauriceGueda表示:

    medication from mexico pharmacy: pharmacies in mexico that ship to usa – medication from mexico pharmacy

  4. you have a very excellent weblog here! do you wish to earn some invite posts on my own weblog?

  5. Sani flo表示:

    I am glad for writing to let you know what a magnificent discovery my friend’s daughter gained reading your site. She even learned many things, most notably what it is like to have a very effective coaching character to make other folks easily know specific impossible subject areas. You undoubtedly surpassed people’s desires. Thanks for offering these good, trustworthy, explanatory and in addition cool tips on that topic to Ethel.

  6. RobertMef表示:

    community pharmacy: benadryl boots pharmacy – plavix pharmacy coupon

  7. RobertMef表示:

    india pharmacy mail order: cheapest online pharmacy india – Online medicine home delivery

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

  9. I enjoyed reading your pleasant website. I see you offer priceless info. stumbled into this website by chance but I’m sure glad I clicked on that link. You definitely answered all the questions I’ve been dying to answer for some time now. Will definitely come back for more of this.

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

  11. ArthurKib表示:

    http://mexicopharmacy.cheap/# pharmacies in mexico that ship to usa

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

  13. Josephfub表示:

    bupropion hcl xl global pharmacy best online pharmacy usa online pharmacy without a prescription

  14. What’s The Current Job Market For Affordable Couches For Sale
    Professionals Like? affordable Couches for sale

  15. To be sure with all your thoughts here and I love your blog! I’ve bookmarked it to ensure that I am able to come back & read more in the future.

  16. I’m really loving the appearance/layout of this weblog – Gulvafslibning | Kurt Gulvmand , Will you actually face any browser interface problems… A number of our own visitors sometimes unhappy with my site not operating effectively in Internet Explorer but looks good inside Opera. Do you possess any advice to aid resolve this problem BTW how about Bahrain incredible news flash

  17. obviously like your web-site however you have to take a look at the spelling on quite a few of your posts. Many of them are rife with spelling issues and I in finding it very bothersome to tell the reality however I’ll certainly come again again.

  18. ArthurKib表示:

    http://mexicopharmacy.cheap/# mexico pharmacies prescription drugs

  19. RobertMef表示:

    buying prescription drugs in mexico online: buying from online mexican pharmacy – mexican pharmaceuticals online

  20. Best Car Seat表示:

    You’ll Never Guess This Best Car Seats For Newborns’s Benefits Best Car Seat

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

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

  23. Rosie表示:

    Who’s The World’s Top Expert On Bunk Bed In My Area?
    eddafay.top – Rosie

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

  25. Josephfub表示:

    zyban online pharmacy lamisil boots pharmacy periactin online pharmacy

  26. RobertMef表示:

    top 10 pharmacies in india: indian pharmacy – best online pharmacy india

  27. What Is It That Makes Bluetooth Sex Machine So Famous?
    Men Sex Machines

  28. RobertMef表示:

    online pharmacy checker: pre pharmacy courses online – rx online

  29. MAPS-EDU表示:

    Переподготовка врачей онлайн maps-edu.ru

    Пройти курсы для учителей начальных классов дистанционно можно в представленной академии. Список состоит из более 1800 разнообразных программ обучения, порой трудно найти, что требуется именно Вам. Можно пользоваться поиском, выбрав направление обучения и другие параметры. Реальные направления: строительство, сельское хозяйство, ветеринария, закупки, дефектология, логопедия, физическая культура и спорт, психология, экономика, метрология и стандартизация, электроэнергетика, монтажные работы, радиационный контроль и многие другие.

  30. This is the right site for anybody who wants to find out about this topic. You realize so much its almost tough to argue with you (not that I really would want to…HaHa). You definitely put a new spin on a topic that’s been written about for years. Wonderful stuff, just excellent.

發佈留言

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