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

  1. лучшие капперы с бесплатными прогнозами лучшие капперы с бесплатными прогнозами .

  2. Sazrmqt表示:

    Здравствуйте!
    Приобрести документ университета
    ai.igcps.com/home.php?mod=space&uid=702040&do=profile

  3. Hi! I just wanted to ask if you ever have any problems with hackers? My last blog (wordpress) was hacked and I ended up losing months of hard work due to no back up. Do you have any solutions to protect against hackers?

  4. купить саженцы с доставкой купить саженцы с доставкой .

  5. I discovered your site internet site on yahoo and check a few of your early posts. Continue to keep inside the excellent operate. I just additional encourage RSS feed to my MSN News Reader. Seeking forward to reading far more on your part later on!…

  6. Lazrzsr表示:

    Здравствуйте!
    Мы изготавливаем дипломы любых профессий по доступным тарифам.
    images.google.je/url?q=aurus-diploms.com

  7. Yay google is my king assisted me to find this outstanding website ! .

  8. Cazraad表示:

    Добрый день!
    Купить диплом института
    купить диплом тренера

  9. very good post, i definitely love this site, keep on it

  10. Merely wanna admit that this is very beneficial , Thanks for taking your time to write this.

  11. mobile devices are always great because they always come in a handy package’

  12. jikvccmhv表示:

    Egal, ob Sie ein stetiger Fan von Casino Echtgeld-Spielen sind oder ein Anfänger, es ist immer wichtig, über die Spiele aktualisiert zu sein, die Sie spielen. Hier haben wir Ihnen eine kurze Information zu den beliebtesten und besten Casino-Spielen, wie Slots, Roulette, Rubbellose und Lotto, sowie Live-Dealer-Spielen (etwas später in diesem Artikel) zusammengestellt. In den Spielotheken hat sich Merkur in den Frühphase logischerweise nur auf das Automaten-Gaming fokussiert. Mit der Edict eGaming GmbH und der Online-Ausrichtung wurde das Gesamt-Portfolio deutlich erweitert. Merkur ist nicht mehr mit den Slots gleichzusetzen. Aus der Hamburger Programmierer-Werft kommen zudem attraktive Tisch- und Kartenspiele. Wir haben ihnen folgend nur einige Beispiele zusammengestellt:
    https://juliawhite.amebaownd.com/posts/55048265
    Huhu, wie ich gerade gesehen habe hast du einen schönen Mint in eine alte Gurke umgebaut. Ich stehe nun vor exakt dem gleichen Problem, habe gerade schon ein Thema dazu eröffnet. Habe deinen Beitrag erst jetzt gefunden, sag mal bitte, war es durch ein einfaches Abziehen einer Platine getan, also das es wieder eine Gurke ist die man gezielt Stoppen kann? Ist dieser Umbau, dieses Abziehen auch für einen Laien machbar oder muss ich da etwas Löten und einen Widerstand einbauen? Inzwischen habe ich 4 Mints gekauft und repariert, zwei davon auf € umgestellt. Zwei von ihnen sind noch immer in meinem Besitz. Und wenn ich aus ständigem Platzmangel mal einen verkaufe, weiß ich im Moment nicht, von welchem ich mich trennen möchte. – Euro Annahme funktioniert (Umstellung 1 zu 1, von 10cent, 1 Euro und 2 Euro Stücken)- 100% korrekte Walzenerkennung- Zählwerke mit WD40 gereinigt und geschmiert, sie funktionieren zu 100%- fast alle Glühlampen gewechselt- Umbau in eine Gurke (abziehen der Mischer Platine zwischen Taster und Hauptplatine) – 230V Zuleitung getauscht- Spielautomat wieder bespielbar

  13. Uazrmru表示:

    Здравствуйте!
    Купить диплом ВУЗа .
    telegra.ph/kupit-diplom-vuza-08-13-5

  14. The extremely nice thing with regards to the The best Commenters widget created into the NoFollow Cost-free plugin would be the reality which you can set the volume of commenters who make the checklist. Fly-by single-comment spammers may not be rewarded with do-follow backlinks or regarded, however they do opt in to your newsletter. Your loyal guests are are subsequently rewarded.

  15. blatta.ru表示:

    Спецодежда купить с доставкой blatta.ru

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

  16. Everyone’s overlooked this foremost concept. I’d wish to be capable of getting my eyes on the assets which you utilized to expose this. Make sure you stick to your writing.

  17. Have you already setup a fan page on Facebook ?”~`.~

  18. Matthewanync表示:

    Магазин Экипировка Эксперт
    ТП 4-28
    Боец, Экипировка Эксперт — это розничный магазин, сотрудничающий с рядом оптовых складов и производителей. Это значит, что при должном количестве товара мы дадим очень хорошие цены.

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

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

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

    Одна из наших основных целей предоставить тебе возможность удобной и безопасной покупки: хоть за наличку, хоть по карте, хоть по счету. Повторимся, если нужна оптовая поставка, согласуем и отгрузим. Именно от того, как ты производишь оплату, зависит цена заказа.

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

    У нашей команды есть набор ценностей: честность, справедливость, сопереживание, взаимопомощь, мужество, патриотичность. Уверены, ты их разделяешь, и мы легко найдем общий язык. Ну а если что-то пойдет не так, не руби с плеча, объясни, где мы ошиблись и поверь, мы разберемся и исправим. Наш девиз “In hostem omnia licita” – по отношению к врагу дозволено все. Возьми этот девиз, он поможет тебе принять правильное решение в трудной ситуации, с честью выполнить боевую задачу и вернуться домой живым и здоровым!

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

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

  21. Josephchish表示:

    Магазин Экипировка Эксперт
    ГАРПИЯ 380W
    Боец, Экипировка Эксперт — это розничный магазин, сотрудничающий с рядом оптовых складов и производителей. Это значит, что при должном количестве товара мы дадим очень хорошие цены.

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

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

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

    Одна из наших основных целей предоставить тебе возможность удобной и безопасной покупки: хоть за наличку, хоть по карте, хоть по счету. Повторимся, если нужна оптовая поставка, согласуем и отгрузим. Именно от того, как ты производишь оплату, зависит цена заказа.

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

    У нашей команды есть набор ценностей: честность, справедливость, сопереживание, взаимопомощь, мужество, патриотичность. Уверены, ты их разделяешь, и мы легко найдем общий язык. Ну а если что-то пойдет не так, не руби с плеча, объясни, где мы ошиблись и поверь, мы разберемся и исправим. Наш девиз “In hostem omnia licita” – по отношению к врагу дозволено все. Возьми этот девиз, он поможет тебе принять правильное решение в трудной ситуации, с честью выполнить боевую задачу и вернуться домой живым и здоровым!

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

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

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

  25. Cazrdrw表示:

    Здравствуйте!
    Купить диплом о высшем образовании
    купить диплом в кузнецке

  26. Written by the director and also Chris Henchy, I’ll even go as far as to say that this among the best comedic scripts since last year’s The Hangover.

發佈留言

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