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

  1. Why Do So Many People Want To Know About Window Replacement Companies?
    Replacement Windows Glass

  2. 20 Reasons To Believe Single Bunk Bed With Desk Will Never Be
    Forgotten bunk beds that turn into single beds

  3. You’ll Never Guess This 18 Wheeler Accident Law Firm’s Tricks
    18 wheeler accident Law firm

  4. You’ll Never Be Able To Figure Out This Veterans Disability Lawyers’s Secrets
    veterans disability lawyers

  5. Pablo表示:

    15 Shocking Facts About Malpractice Attorneys malpractice lawsuit (Pablo)

  6. 청년 대출表示:

    Your Bank Is Broke And Could Use A Bailout,
    Exactly What You Ought To Do 청년 대출

  7. Lidia表示:

    See What Best Online Shopping Uk Clothes Tricks The Celebs Are Utilizing best online shopping uk clothes (Lidia)

  8. Here’s A Little Known Fact Concerning Hyundai Ix35 Key Replacement
    lost hyundai key fob

  9. Lawyers表示:

    A Look At The Future What’s In The Pipeline? Motor Vehicle Lawyer
    Industry Look Like In 10 Years? Lawyers

  10. The Most Underrated Companies To Watch In Online Shopping Sites For Clothes Industry us online shopping sites for clothes (inbest.clickcorp.kr)

  11. Orchard Credit Cards – Must I Sign Down? 소액 대출 (https://posteezy.com/)

  12. What’s The Job Market For Uk Online Phone Shopping Sites Professionals Like?
    Uk Online Phone Shopping Sites

  13. Important An Individual Must Remember Before Deciding On Online Poker Play 에볼루션 홀덤

  14. tubidy表示:

    I’m amazed, I must say. Rarely do I come across a blog that’s both educative and amusing, and let me tell you, you’ve hit the nail on the head. The issue is an issue that too few people are speaking intelligently about. I am very happy that I found this in my search for something relating to this.

  15. Guide To Online Shopping Sites In United Kingdom: The Intermediate Guide Towards Online Shopping Sites In United Kingdom online shopping sites in united kingdom (https://strongprisonwivesandfamilies.com/)

  16. The 10 Scariest Things About Patio Door Repair Near Me patio door repair near me

  17. Five Killer Quora Answers On Cheap Online Grocery Shopping Uk
    cheap online grocery shopping uk

  18. You’ll Be Unable To Guess Fela Federal Employers Liability Act’s Benefits fela federal employers Liability Act

  19. tubidy表示:

    Can I simply say what a comfort to find a person that really understands what they’re talking about on the web. You definitely realize how to bring a problem to light and make it important. More people ought to look at this and understand this side of the story. I can’t believe you’re not more popular since you definitely have the gift.

  20. 5 Killer Quora Answers On Double Glazed Near Me double glazed near Me

  21. The 10 Most Scariest Things About Bipolar Psychiatrist Near Me
    Bipolar Psychiatrist near me

  22. Crawley Window Repair Isn’t As Difficult As You Think Upvc Windows near Me

  23. Birth Defect表示:

    Guide To Birth Defect Attorney: The Intermediate Guide To Birth Defect Attorney Birth Defect

  24. See What Single Push Chair Tricks The Celebs Are Utilizing Single Push Chair

  25. 8 Tips To Boost Your Who Repairs Sliding Patio Doors
    Game How To Repair Tilt And Slide Patio Door

  26. Don’t Stop! 15 Things About Online Famous Shopping Sites We’re Tired Of Hearing
    which supermarket is best For online shopping

  27. Five Killer Quora Answers To Uk Online Shoe Shopping Websites uk Online shoe shopping websites

  28. 11 Ways To Completely Revamp Your High Wycombe Door Panels internal fire doors High wycombe

  29. 913875.xyz表示:

    10 Of The Top Mobile Apps To Use For Stove Wood 913875.xyz

發佈留言

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