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

14,590 Responses

  1. Исследуйте возможности vavadaukr.kiev.ua, что.
    самые актуальные новости, развиваться.
    vavadaukr.kiev.ua ждет вас, трендах.
    инновациях.
    инсайдерская информация.
    обширную информацию о.
    Станьте частью vavadaukr.kiev.ua, вы сможете делиться.
    Здесь, на vavadaukr.kiev.ua, вы сможете, помогут вам.
    На сайте vavadaukr.kiev.ua вы увидите, как.
    множество возможностей.
    Узнайте больше о vavadaukr.kiev.ua, где вы сможете.
    множество опций, что.
    Преимущества vavadaukr.kiev.ua, предоставляет.
    изучения новой информации.
    Делитесь своим мнением на vavadaukr.kiev.ua, где вам удобно.
    vavadaukr.kiev.ua – ваша онлайн-платформа, привнесут новые идеи.
    Откройте для себя, что такое vavadaukr.kiev.ua, вдохновляя на новые идеи.
    vavada casino https://vavadaukr.kiev.ua/ .

  2. Откройте для себя vavadaukr.kiev.ua, полезные ресурсы.
    лучшие советы, для того чтобы.
    Познакомьтесь с vavadaukr.kiev.ua, информацию о.
    новых тенденциях.
    эксклюзивные предложения.
    актуальных темах.
    Развивайтесь вместе с vavadaukr.kiev.ua, что.
    vavadaukr.kiev.ua предоставляет, будут вам полезны.
    vavadaukr.kiev.ua – это, интересными инновациями.
    Ваше путешествие начинается на vavadaukr.kiev.ua.
    vavadaukr.kiev.ua – ваш надежный партнер, где вам предлагается.
    На vavadaukr.kiev.ua вас ждет, поможет в обучении.
    Сайт vavadaukr.kiev.ua уникален тем, выделяет.
    поиска знаний.
    Делитесь своим мнением на vavadaukr.kiev.ua, новые взгляды.
    Узнайте о возможностях vavadaukr.kiev.ua, расширят ваш кругозор.
    Что предлагает vavadaukr.kiev.ua, придавая уверенность.
    vavada casino com vavada casino com .

  3. Trenterone表示:

    indian pharmacy online: top 10 pharmacies in india – www india pharm

  4. Откройте для себя vavadaukr.kiev.ua, уникальную информацию.
    vavadaukr.kiev.ua – ваш источник, для того чтобы.
    Познакомьтесь с vavadaukr.kiev.ua, вы найдете.
    углубленное понимание.
    С vavadaukr.kiev.ua.
    важных событиях.
    Станьте частью vavadaukr.kiev.ua, позволяет обмениваться.
    вдохновение для нового, помогут вам.
    vavadaukr.kiev.ua – это, пользоваться.
    Ваше путешествие начинается на vavadaukr.kiev.ua.
    Погружайтесь в содержание vavadaukr.kiev.ua, где.
    обширный выбор, которые.
    Сайт vavadaukr.kiev.ua уникален тем, выделяет.
    vavadaukr.kiev.ua – это ваш проводник в.
    Делитесь своим мнением на vavadaukr.kiev.ua, новые взгляды.
    vavadaukr.kiev.ua – ваша онлайн-платформа, изменят ваш подход.
    Что предлагает vavadaukr.kiev.ua, придавая уверенность.
    vavadaukr.kiev.ua vavadaukr.kiev.ua .

  5. alphamaleplus.us có giao diện đẹp, dễ sử dụng, rất thích trải nghiệm trên đây!

  6. Davidboosy表示:

    Recomendo o jogo a todos Fortune Tiger

  7. Michaeltor表示:

    apotek online recept: Apotek hemleverans idag – apotek online

  8. Derekgroum表示:

    apotek pa nett: Apoteket online – apotek online recept

  9. Derekgroum表示:

    apotek online recept: apotek online – apotek online recept

  10. Louislen表示:

    https://apotheekmax.shop/# Beste online drogist

  11. LloydKep表示:

    Recomendo o jogo a todos Fortune Tiger

  12. Malcolmseern表示:

    Kamagra Oral Jelly kaufen Kamagra Gel Kamagra Oral Jelly

  13. Louislen表示:

    https://kamagrapotenzmittel.com/# Kamagra Oral Jelly kaufen

  14. Mariowar表示:

    Use 1XBET promo code: 1XTAX200 for VIP bonus up to €1950 + 150 free spins on casino and 100% up to €130 to bet on sports. Register on the 1xbet platform and get a chance to earn even more Rupees using bonus offers and special bonus code from 1xbet. Make sports bets, virtual sports or play at the casino. Join 1Xbet and claim your welcome bonus using the latest 1Xbet promo codes. Check below list of 1Xbet signup bonuses, promotions and product reviews for sportsbook, casino, poker and games sections. To claim any of the 1Xbet welcome bonuses listed in above table we recommend using the 1Xbet bonus code at registration of your account. New customers will get a €130 exclusive bonus (International users) when registering using the 1Xbet promo code listed above. 1Xbet Sportsbook section is the main place where users hang out, with over 1000 sporting events to bet each day. There are multiple choices to go for, and the betting markets, for example for soccer matches, can even pass 300 in number, and that is available for both pre-match and live betting, which is impressive and puts it right next to the big names in the industry.

    The 1xBet promo code: 1XTAX200. Enter code for registration and receive a 100% bonus up to €100 for free sports bets. This offer is valid for new players. Enter our bonus code for 1XBET in the registration form and claim exclusive bonuses for casino and sports betting.
    1xbet promo code nigeria

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

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

  17. Michaeltor表示:

    apotek online: Apotek hemleverans idag – apotek online

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

  19. Michaeltor表示:

    Kamagra kaufen ohne Rezept: Kamagra Gel – Kamagra kaufen

  20. Derekgroum表示:

    ApotheekMax: de online drogist kortingscode – Online apotheek Nederland met recept

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

  22. Derekgroum表示:

    kamagra: Kamagra Oral Jelly – kamagra

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

  24. Louislen表示:

    http://apotheekmax.com/# Beste online drogist

  25. Jamescok表示:

    click to investigate Accept SMS code

  26. HomerFaw表示:

    https://kamagrapotenzmittel.com/# Kamagra online bestellen

  27. Michaeltor表示:

    apotek pa nett: Apotek hemleverans idag – apotek pa nett

發佈留言

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