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

  1. Edwardopele表示:

    farmaci senza ricetta elenco: farmacia online senza ricetta – comprare farmaci online con ricetta

  2. JeffreyHiz表示:

    Вы слышали об авторских изделиях ростовской финифти и хотите их

    русские подарки

  3. BradleyThine表示:

    Farmacia online miglior prezzo: Cialis senza ricetta – Farmacie on line spedizione gratuita
    acquistare farmaci senza ricetta

  4. Clinterete表示:

    https://farmabrufen.com/# BRUFEN 600 acquisto online
    farmacia online

  5. Edwardopele表示:

    farmacie online autorizzate elenco: Farma Prodotti – farmaci senza ricetta elenco

  6. BradleyThine表示:

    Farmacia online piГ№ conveniente: Tadalafil generico migliore – farmacia online piГ№ conveniente
    acquistare farmaci senza ricetta

  7. Clinterete表示:

    https://farmabrufen.shop/# BRUFEN 600 acquisto online
    Farmacie online sicure

  8. Edwardopele表示:

    viagra cosa serve: viagra 100 mg prezzo in farmacia – viagra naturale in farmacia senza ricetta

  9. Действуй за Реальные Деньги с Легкостью! Онлайн покер – является не просто игра, это целая мир волнения, стратегии а шанса выиграть реальные деньги, без выходя с квартиры. Если ты ищете где поиграть на покер в интернете, на русском языке и с выводом денег непосредственно на карту, значит вы оказались нужному адресу. Данная статья – твой проводник в мир онлайн покера в россии.

    Почему Онлайн Покер так Популярен? Покер – это классическая карточная игра, что веками завлекала миллионы людей. Онлайн формат дал ей новую жизнь, сделав игры открытыми для всех желающих. Вот только пара причин популярности онлайн покера:

    Удобство а открытость: Играть можно в всякое время а в каком угодно месте, обладая лишь подключение к браузере либо мобильному устройству. Большой выбор: Покеррумы предлагают разнообразные виды покера, форматы турниров и уровни ставок. Играть с реальными людьми: Ты способен бороться с реальными соперниками со целого мира, а ни с компьютерными ботами. Шанс выигрывать реальные деньги: Играть на деньги – является не только азарт, но также возможность пополнить свой кошелек. Социальный аспект: Возможно играть с друзьями либо устанавливать свежие знакомства с людьми, разделяющих ваш интерес. Где Играть в Онлайн Покер в россии на Реальные Деньги? В россии существует множество сайты и покеррумы, дающих игры в онлайн покер. Но каким образом подобрать оптимальный из них? Мы окажем помощь вам сориентироваться:

    Популярные Покеррумы для Русских Игроков:

    Мы составили рейтинг лучших покеррумов для русском языке игроков, беря во внимание следующие критерии:

    Наличие русского языка: Интерфейс и поддержка должны быть на русском языке. Возможность играть на рубли: Депозиты и вывод средств обязаны быть открыты в рублях. Разнообразие игр и турниров: Большой выбор столов и турниров для всевозможных уровней игроков. Наличие мобильного приложения: Возможность скачать приложение для андроид и играть с мобильного устройства. Наличие прибыльных бонусов: Бездепозитным бонусом за регистрацию, начальным капиталом, бонусы на депозит а другие акции. Безопасность а репутация: Безопасность транзакций а честность игры. Топ румов постоянно обновляется, из-за этого рекомендуем наблюдать за актуальными обзорами и отзывами игроков.

    Особое Внимание на Минимальный Депозит:

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

    Разрешенные Покеррумы:

    Убедитесь, чтобы выбранный вами рум есть разрешенным в россии, чтобы не допустить вероятных проблем с доступом а выводом средств.

    Онлайн Покер с Выводом Денег на Карту: Как Это Работает? После того, как вы определились с покеррумом и выбрали игру, вы можете пополнить твой счет а начать играть на деньги. Большинство сайтов дают различные способы пополнения и вывода средств, включая:

    Банковские карты (Visa, Mastercard) Электронные кошельки Другие платежные системы Вывод денег на карту обычно требует от нескольких часов до нескольких дней, в зависимости от рума а выбранного способа вывода.

    Как Играть в Онлайн Покер с Друзьями? Многие покеррумы дают возможность играть с друзьями за закрытыми столами. Это отличный метод провести время с людьми, с которыми ты знакомы, и сразиться за звание лучшего игрока в твоей компании.

    Бесплатный Покер: Возможность Попробовать Свои Силы Если вы новичок и желаешь сначала привыкнуть с правилами, многие сайты предлагают возможность играть в бесплатный покер. Данное отличный метод поупражняться а набраться опыта перед тем, как начать играть на реальные деньги.

    Покер на пк: Комфорт а Удобство Когда вы выбираешь играть на пк, то большинство покеррумов предлагают программы для компьютеров, которые гарантируют более комфортный а стабильный игровой процесс.

    Заключение: Начните Твой Путь в Мир Онлайн Покера Сегодня! Онлайн покер – это волнующая игра, что способна принести вам ни просто наслаждение, но и реальные деньги. Подбирайте проверенные сайты и румы, принимайте участие в турнирах, играйте с друзьями и людьми со целого мира, и знайте, что главное – это получать удовольствие от игры!

    Ни отсрочивайте на потом, начните твою игру в онлайн покер прямо сейчас! Окунитесь в мир тактики, волнения и шансов! Удачи за столами!

  10. BradleyThine表示:

    acquisto farmaci con ricetta: Farma Brufen – Farmacia online piГ№ conveniente
    top farmacia online

  11. Edwardopele表示:

    Farmacie online sicure: FarmaBrufen – Farmacia online piГ№ conveniente

  12. website here表示:

    An outstanding share! I’ve just forwarded this onto a colleague who had been conducting a little homework on this. And he in fact bought me breakfast simply because I stumbled upon it for him… lol. So let me reword this…. Thank YOU for the meal!! But yeah, thanks for spending the time to discuss this subject here on your web page.

  13. BradleyThine表示:

    viagra naturale: FarmaSildItaly – viagra subito
    acquisto farmaci con ricetta

  14. 5 Arguments Head Injury Attorneys Near Me Is Actually A Great Thing Injury attorney lawyer (https://blogfreely.net)

  15. Clinterete表示:

    http://farmaprodotti.com/# comprare farmaci online all’estero
    comprare farmaci online con ricetta

  16. Yeanox表示:

    prednisolone 10mg ca – buy prometrium 200mg generic buy prometrium

  17. Edwardopele表示:

    viagra originale in 24 ore contrassegno: Viagra – cerco viagra a buon prezzo

  18. MichaelUsaws表示:

    http://farmabrufen.com/# Ibuprofene 600 prezzo senza ricetta
    farmaci senza ricetta elenco

  19. BradleyThine表示:

    Farmacie online sicure: FarmaBrufen – acquisto farmaci con ricetta
    comprare farmaci online all’estero

  20. Clinterete表示:

    https://farmabrufen.com/# Farma Brufen
    farmacia online

  21. Edwardopele表示:

    farmacie online sicure: BRUFEN prezzo – comprare farmaci online all’estero

  22. MichaelUsaws表示:

    https://farmaprodotti.shop/# Farmacie on line spedizione gratuita
    farmacia online piГ№ conveniente

  23. Секреты успешной покупки входной металлической двери, которая прослужит долгие годы.
    Места, где можно приобрести качественную входную металлическую дверь.
    дверь металлическая заказать двери входные металлические .

    Что учесть при выборе входной металлической двери.
    5 основных причин купить металлическую входную дверь.
    Сравнение входных металлических дверей различных брендов.

  24. BradleyThine表示:

    farmacia online piГ№ conveniente: Farma Prodotti – Farmacia online piГ№ conveniente
    comprare farmaci online con ricetta

  25. MichaelUsaws表示:

    https://farmabrufen.shop/# Brufen senza ricetta
    acquistare farmaci senza ricetta

  26. Clinterete表示:

    https://farmaprodotti.shop/# farmaci senza ricetta elenco
    comprare farmaci online all’estero

  27. Edwardopele表示:

    Farmacie online sicure: BRUFEN 600 acquisto online – Farmacia online miglior prezzo

  28. BradleyThine表示:

    comprare farmaci online all’estero: Farma Brufen – Farmacie online sicure
    п»їFarmacia online migliore

  29. MichaelUsaws表示:

    http://farmatadalitaly.com/# п»їFarmacia online migliore
    farmacie online sicure

  30. 20 Myths About Freezer Fridge 50/50: Busted Fridge freezer 50/50

發佈回覆給「Edwardopele」的留言 取消回覆

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