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

  1. DanielTet表示:

    buy cytotec pills online cheap http://furosemide.win/# lasix generic
    lasix dosage

  2. 15 Unquestionably Reasons To Love Best Couples Sex Toy Couples Kinky Toys

  3. Trefhhn表示:

    Здравствуйте!
    Узнайте, как безопасно купить диплом о высшем образовании
    cybex-spb.ru/product/cybex-pallas-m-fix-happy-black/reviews
    Будем рады вам помочь!.

  4. Yrefwlj表示:

    Привет, друзья!
    Купить диплом о высшем образовании.
    taxi-bateau-bassindarcachon.com/la-saga-de-la-eine-darcachon/img_1371/#comment-1424014

  5. вывод из запоя анонимно ростов [url=http://www.vyvod-iz-zapoya-rostov111.ru]вывод из запоя анонимно ростов[/url] .

  6. Dnrtkql表示:

    Добрый день!
    Заказать документ университета вы можете у нас в Москве.
    freeboard.com.ua/forum/viewtopic.php?pid=957502#p957502

  7. Hello there! I could have sworn I’ve visited this site before but after looking at a few of the articles I realized it’s new to me. Regardless, I’m certainly delighted I stumbled upon it and I’ll be bookmarking it and checking back frequently!

  8. Sazrrsk表示:

    Привет, друзья!
    Заказать документ ВУЗа
    cse.google.gg/url?sa=t&url=aurus-diploms.com

  9. Uazrgua表示:

    Добрыйдень!
    Заказать диплом любого университета.
    telegra.ph/gde-kupit-diplom-otzyvy-08-13

  10. Mazrdah表示:

    Привет!
    Покупка диплома о среднем полном образовании: как избежать мошенничества?
    laemngophos.org/webboard/showthread.php?tid=78324

  11. Sazrikf表示:

    Здравствуйте!
    Заказать документ о получении высшего образования
    moskovskij.getbb.ru/viewtopic.php?f=12&t=678

  12. Lariorapc表示:

    Официальная покупка диплома вуза с сокращенной программой обучения в Москве
    telegra.ph/diplom-blank-kupit-08-13-8

  13. Lariorpfb表示:

    Реально ли приобрести диплом стоматолога? Основные этапы
    telegra.ph/kupit-diplom-o-vysshem-obrazovanii-otzyvy-08-13-6

  14. Larioravp表示:

    Приобретение диплома ПТУ с сокращенной программой обучения в Москве
    telegra.ph/kupit-diplom-stomatologa-08-13-7

  15. win79表示:

    It’s hard to come by knowledgeable people about this topic, however, you sound like you know what you’re talking about! Thanks

  16. Treftmo表示:

    Здравствуйте!
    Как быстро получить диплом магистра? Легальные способы
    myskupera.ru/forum/messages/forum1/topic12/message96362/?result=reply#message96362
    Рады оказаться полезными!.

  17. подключение тревожной кнопки росгвардии http://trknpk.ru .

  18. rikvip表示:

    Good day! I just would like to give you a big thumbs up for your great information you’ve got here on this post. I will be returning to your website for more soon.

  19. Diplomi_ohEa表示:

    Добрый день!
    Купить документ о получении высшего образования можно в нашем сервисе.
    getamped.yxhi.com/doku.php?id=gosznacdiplom

  20. Yrefxzf表示:

    Добрый день!
    Приобрести диплом о высшем образовании.
    forum.arz-redlight.9ab.ru/threads/28785

  21. прокарниз [url=www.provorota.su/]прокарниз[/url] .

  22. Cazrqgn表示:

    Добрый день!
    Мы можем предложить документы ВУЗов
    naturessunshine-nataly.blogspot.com/2012/08/xxi-l

  23. Mazrwtx表示:

    Привет, друзья!
    Реально ли приобрести диплом стоматолога? Основные шаги
    helenos.pavel-rimsky.cz/doku.php?id=luxdiplom

  24. Sazrmjn表示:

    Привет, друзья!
    Диплом специалиста
    telegra.ph/lgoty-pri-oplate-obucheniya-v-vuze-08-02

  25. Cazrtfm表示:

    Привет!
    Купить диплом института
    telegra.ph/napravleniya-obucheniya-v-vuzah-08-02

  26. гадание индийский пасьянс [url=www.indiyskiy-pasyans-online.ru]гадание индийский пасьянс [/url] .

  27. GarrettBic表示:

    Мой Источник Права специализируется на предоставлении всего комплекса юридических услуг от консультаций до ведения сложнейших дел в судах различных инстанций.
    [url=https://advokat-malov.ru ]можно ли оформить наследство через мфц[/url]
    Несмотря на молодость компании, специалисты неоднократно доказывали свою компетенцию в решении сложных юридических задач. Помимо консультирования граждан и юридической поддержки компаний, адвокаты осуществляют успешную правовую защиту наших клиентов в суде.

    Основные направления деятельности компании:

    оказание юридических услуг организациям;
    правовая поддержка физических лиц;
    регистрационные действия и ликвидация.
    Каждый специалист имеет специализацию в области права и большой практический опыт. Средний стаж юридической практики наших адвокатов – 20 лет. Гарантией победы в решении сложнейших дел клиентов является грамотный подход, богатый профессиональный и жизненный опыт наших адвокатов. Мы с гордостью отмечаем высокие компетенции специалистов, что подтверждается положительными отзывами наших клиентов и доверительными отношениями с ними.

    Более половины клиентов МИП в дальнейшем регулярно обращаются к нам за юридической консультацией.

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

    Мы уверены, что выбор адвоката строится на основании доверия к нему, поэтому стремимся не допускать расхождения слов с делом.

  28. LouisAlubs表示:

    At the end of the day, don’t we all want to be happy? Here are 5 ways to get there
    [url=https://amulex.ru]юрист 115 фз[/url]
    Americans are really into pursuing happiness.

    What happiness means is different for each individual and may shift over a lifetime: joy, love, purpose, money, health, freedom, gratitude, friendship, romance, fulfilling work? All of the above? Something else entirely? Many have even suggested that while we may think we know what will make us happy, we are often wrong.

    One man may have cracked the code for what makes a happy and healthier life — and he has the data to back him up.

    Dr. Robert Waldinger is the director of the Harvard Study of Adult Development — possibly the longest-running longitudinal study on human happiness, which started back in 1938. (The original study followed two groups of males, Harvard College students and adolescents in Boston’s inner city. It was expanded in recent decades to include women and people of more diverse backgrounds.)

    Plenty of components are at play in the quest for a happier life, but the key comes down to one main factor: quality relationships.

    “What we found was that the important thing was to stay actively connected to at least a few people, because we all need a sense of connection to somebody as we go through life,” Waldinger told CNN Chief Medical Correspondent Dr. Sanjay Gupta recently on his podcast Chasing Life.

    “And the people who were connected to other people lived longer and stayed physically healthier than the people who were more isolated,” he said. “That was the surprise in our study: not that people were happier but that they lived longer.”

  29. Alfredtom表示:

    Юридические услуги от адвокатов и юристов с самым высоким рейтингом
    [url=https://alliance-advokatov.ru]юрист по семейным делам москва[/url]
    Если вам нужна помощь по любым юридическим вопросам в Москве, наша команда высококлассных юристов работает для вас 24 часа в сутки, 7 дней в неделю.
    У нас есть группа экспертов, которые предоставляют консультации и помощь по различным юридическим вопросам: семейные, финансовые или административные. Мы внимательно исследуем Вашу ситуацию и разработаем эффективный план действий по юридической защите. Изучим доказательную базу и подготовим необходимые документы, которые законно решат Ваши юридические трудности. Вы можете связаться с нами по телефону, онлайн или лично, чтобы обсудить проблему.

    Юристы Межрайонной ассоциации Москвы
    Компетентные специалисты, эксперты в различных областях права. Они помогут в решении самых разных юридических проблем:

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

    Адвокаты Межрайонной ассоциации Москвы могут помочь Вам положительно решить даже трудно доказуемые ситуации. Например, наши клиенты выигрывали дела, связанные с:
    ДТП;
    взысканием долгов;
    бракоразводными процессами;
    разделом имущества.
    Наши адвокаты лично сопровождают клиентов, представляют интересы на встречах с представителями исполнительных, надзорных и государственных органов, а также в суде.

    Ассоциация адвокатов и юристов Москвы поможет отстоять Ваши права и избежать лишних юридических трудностей. Мы предлагаем доступную и профессиональную юридическую помощь в решении любых сложных правовых вопросов.

  30. Dnrtfxs表示:

    Добрый день!
    Заказать документ о получении высшего образования вы можете в нашей компании.
    freeboard.com.ua/forum/viewtopic.php?pid=957502#p957502

發佈留言

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