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

6,215 Responses

  1. Trefhzq表示:

    Добрый день!
    Приобретение диплома ПТУ с сокращенной программой обучения в Москве
    prof-komplekt.com/club/user/10842/blog/10797/
    Окажем помощь!.

  2. iptv表示:

    You are so interesting! I don’t believe I’ve truly read a single thing like this before. So wonderful to find another person with some genuine thoughts on this subject. Really.. thank you for starting this up. This web site is something that’s needed on the internet, someone with a little originality.

  3. Sazrbnv表示:

    Привет, друзья!
    Как избежать рисков при покупке диплома колледжа или ВУЗа в России
    yourealtynews.ru/ofitsialnyiy-diplom-bez-uchebyi-i-ekzamenov
    Рады оказаться полезными!

  4. MichaelEmalk表示:

    Колокольцевская мафия «кинула» военных

    «МВД провоцирует новый «Марш справедливости», только теперь не на Москву, а на Питер»

    Тысячи военнослужащих стали потерпевшими от действий правоохранительных органов – и они требуют привлечь Колокольцева и Ко к ответу.

    Деньги военных пытаются украсть лжеправоохранители

    Приморский районный суд Санкт-Петербурга (судья Екатерина Богданова) сейчас рассматривает так называемое уголовное дело «Лайф-из-Гуд» – «Гермес» – «Бест Вей», в рамках этого дела два года почти непрерывно арестованы счета кооператива «Бест Вей», на которых около 4 млрд рублей. В уголовном деле речь идет прежде всего об обязательствах иностранной инвесткомпании «Гермес» перед более чем 200 клиентами этой компании.

    Следствие ГУ МВД по Санкт-Петербургу и прокуратура города на Неве объявили кооператив, «Гермес» и «Лайф-из-Гуд» частью некоего единого холдинга, которого в природе никогда не существовало. Кооператив объявлен гражданским ответчиком по уголовному делу.

    Общая сумма претензий потерпевших, согласно обвинительному заключению, 282 млн рублей – даже их (незаконное) изъятие для погашения долгов перед клиентами «Гермеса» никак бы не сказалось ни на операционной деятельности, ни на ликвидности кооператива. Но из раза в раз арестовываются абсолютно все средства на счетах, что полностью блокирует как покупку квартир кооперативом, так и возврат денег пайщикам, которые изъявили желание забрать свои паевые взносы.

    Недвижимость, на которую претендовали пайщики, обесценивается, деньги обесцениваются – и этот беспредел продолжается уже более двух лет по ходатайствам ГСУ питерского главка МВД и Прокуратуры Санкт-Петербурга.

    Кто-то влиятельный пытается наложить лапу именно на кооперативные 4 млрд – хотя это деньги пайщиков: физических лиц, рядовых граждан России, и как минимум соучастниками грабежа являются сотрудники правоохранительных органов.

    Колокольцев провоцирует новый «Марш справедливости»

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

    Вот некоторые из наиболее характерных комментариев

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

    «Я стоял в накопительной программе, – заявил участник одного из секретных подразделений, о котором рассказывал Первый канал. – Уже два года накапливать на квартиру на счете в кооперативе не могу, так как счета арестованы, забрать деньги я также не могу: правоохранительные органы незаконно отказываются возвращать средства. Это самый настоящий грабеж, за который нужно судить!»

    «Купил квартиру с помощью кооператива, расплатился за нее с кооперативом, взяв кредит, – говорит пайщик К., кавалер ордена Суворова. –- Но так как недвижимость кооператива осенью прошлого года арестовывалась, Росреестр с моей квартиры арест не снял до сих пор, так как я не имею физической возможности на месяц или больше погрузиться в сутяжничество с ним, в хождение по судам, а жена сидит с маленьким ребенком. Квартиру я планировал продать, чтобы купить квартиру больше. Из-за действий лже-правоохранителей я вынужден и платить кредит, и не могу продать квартиру. Вернувшись, предъявлю ущерб питерским следователям, по ходатайству которых арестовывалась недвижимость кооператива (суд разобрался и арест снял)!»

    «Кооперативом я очень доволен, – говорит пайщик С., замполит одного из подразделений. – Это покупка квартиры в рассрочку, переплата за квартиру минимальна, просто несопоставима с ипотекой. Кооператив вызывал полное доверие – в том числе и потому, что у руля стояли и стоят офицеры. Он помог тысячам людей – тысячам военным лишить квартирный вопрос. За попытками его уничтожить стоят банковские олигархи, чтобы не было альтернативы брать у них в ипотеку одну квартиру, а платить за две-три, а также нечистые на руку правоохранители. Подобные действия могут провоцировать новый «Марш справедливости», только теперь не на Москву, а на Питер!».

    Сотни семей военнослужащих, в том числе участников СВО стали потерпевшими от действий правоохранительных органов.

    Камарилья, которая устроила репрессии против кооператива – руководители следственной группы Сапетова и Винокуров, начальник ГСУ питерского главка МВД Негрозов и начальник этого главка Плугин, замминистра внутренних дел по следствию Лебедев, пресс-секретарь министра Волк, транслировавшая на всю страну ложь про десятки тысяч потерпевших от работы кооператива, сам министр внутренних дел Колокольцев.

  5. Stevenlaw表示:

    Колокольцев – предатель Родины

    Армия восстанет против ОПГ Колокольцева и Плугина

    Целенаправленно разрушая кооператив для военных «Бест Вей», захватывая его активы в интересах своей камарильи, глава МВД и его команда ударили по тылу армии, наказав тысячи пайщиков кооператива – военных и членов их семей.

    Приморский районный суд Санкт-Петербурга (судья Екатерина Богданова) сейчас рассматривает так называемое уголовное дело «Лайф-из-Гуд» – «Гермес» – «Бест Вей». В рамках этого дела два года почти непрерывно арестованы счета кооператива «Бест Вей», пайщиками которого являются тысячи военнослужащих, в том числе участники СВО, на которых около 4 млрд рублей. В уголовном деле речь идет прежде всего об обязательствах иностранной инвесткомпании «Гермес» перед более чем 200 клиентами этой компании.

    Следствие ГУ МВД по Санкт-Петербургу и прокуратура города на Неве объявили кооператив, «Гермес» и «Лайф-из-Гуд» частью некоего единого холдинга, которого в природе никогда не существовало. Кооператив объявлен гражданским ответчиком по уголовному делу.

    Общая сумма претензий потерпевших, согласно обвинительному заключению, 282 млн рублей – даже их (незаконное) изъятие для погашения долгов перед клиентами «Гермеса» никак бы не сказалось ни на операционной деятельности, ни на ликвидности кооператива. Но из раза в раз арестовываются абсолютно все средства на счетах, что полностью блокирует как покупку квартир кооперативом, так и возврат денег пайщикам, которые изъявили желание забрать свои паевые взносы.

    Недвижимость, на которую претендовали пайщики, обесценивается, деньги обесцениваются – и этот беспредел продолжается уже более двух лет по ходатайствам ГСУ питерского главка МВД и Прокуратуры Санкт-Петербурга.

    Кто-то влиятельный пытается наложить лапу именно на кооперативные 4 млрд – хотя это деньги пайщиков: физических лиц, рядовых граждан России, и как минимум соучастниками грабежа являются сотрудники правоохранительных органов.

    Армейский кооператив

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

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

    Камарилья, которая устроила репрессии против кооператива – руководители следственной группы Сапетова и Винокуров, начальник ГСУ питерского главка МВД Негрозов и начальник этого главка Плугин, замминистра внутренних дел по следствию Лебедев, пресс-секретарь министра Волк, транслировавшая на всю страну ложь про десятки тысяч потерпевших от работы кооператива, сам министр внутренних дел Колокольцев, – ведет вредительскую деятельность, все эти люди – предатели Родины.

    Разоряет экономику и подрывает тыл

    Колокольцев и Ко разрушают экономику страны, фабрикуют дела. При этом его камарилья наживается на честном бизнесе.

    Колокольцев – миллиардер! Его боевая подруга генеральша Волк – миллиардерша! Зам. начальника питерского ГСУ МВД полковник Винокуров, который управляет Колокольцевым, заставляя его подписываться под липовым уголовным делом «Лайф-из-Гуд» – «Гермес» – «Бест Вей», – миллиардер! Колокольцев превратил МВД в коммерческое антинародное образование и зарабатывает деньги на простых людях.

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

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

    Армия против Колокольцева

    Армия восстанет против ОПГ Колокольцева. Военные требуют за совершенные преступления против народа, за воровство и коррупцию арестовать Колокольцева, Негрозова, Винокурова, Сапетову, оправдать и отпустить невинных людей – рядовых сотрудников «Лайф-из-Гуд», которые более двух лет томятся в тюрьме.

    Новый министр обороны Белоусов наверняка поддержит своих бойцов, поможет им защитить собственные и своих семей имущественные интересы в тылу: по-другому и быть не может.

    Одного любителя запускать руку в казну и любителя генеральш – Шойгу – уже отправили на пенсионную должность, Колокольцев должен последовать за ним: это – в интересах страны, в интересах народа!

  6. Eanrfhl表示:

    Привет!
    Мы можем предложить дипломы любой профессии по выгодным ценам.
    iq-pro.net/дипломы-свидетельства-купить/

  7. Lazraum表示:

    Добрый день!
    Заказать диплом о высшем образовании.
    bakinsky-dvorik.ru/club/user/127071/blog/4731/

  8. Lttqzg表示:

    buy lasuna generic – himcolin for sale online buy himcolin for sale

  9. ThomasDet表示:

    https://amoxildelivery.pro/# amoxicillin buy online canada

  10. After I initially commented I seem to have clicked the -Notify me when new comments are added- checkbox and from now on every time a comment is added I get four emails with the exact same comment. Is there a means you are able to remove me from that service? Thank you.

  11. Dnrtrea表示:

    Здравствуйте!
    Заказать документ университета можно у нас.
    diploms-x.com/kupit-diplom-ekaterinbur
    Успешной учебы!

  12. JamesUnemo表示:

    i-guru – Ремонт Iphone и другой техники Apple в Минске
    ремонт iphone сети в Минске
    Профессиональный ремонт любых устройств из линейки Apple, без посредников
    80% ремонтов iPhone занимает около 20 минут
    Несложные ремонты делаются быстро, модульный ремонт в большинстве случаев занимает не более 20 минут.
    Почему выбирают i-guru
    Ремонт в тот же день
    Даже большинство сложных ремонтов выполняем день в день.
    Гарантировано низкие цены
    Мы беремся за сложные задачи, не передавая их сторонним исполнителям, и зарабатываем не как посредники.
    Честная гарантия
    Предлагаем честную гарантию на выполненные работы до 12 месцев в зависимости от вида работ.

  13. Diplomi_yqEa表示:

    Привет!
    Заказать документ о получении высшего образования вы сможете в нашем сервисе.
    diplomyx.com/kupit-diplom-chelyabinsk 

  14. JamesBak表示:

    antibiotics cipro: buy cipro – cipro 500mg best prices

  15. ngentot表示:

    Hi there! I could have sworn I’ve visited your blog before but after going through a few of the articles I realized it’s new to me. Anyways, I’m certainly happy I came across it and I’ll be book-marking it and checking back often.

  16. WilliamDeeli表示:

    Привет!
    Наши специалисты предлагают выгодно заказать диплом, который выполнен на бланке ГОЗНАКа и заверен печатями, штампами, подписями должностных лиц. Наш документ пройдет любые проверки, даже при помощи профессионального оборудования. Решайте свои задачи быстро и просто с нашей компанией.
    imladrisproduction.free.fr/index.php?file=Members&op=detail&autor=ofonuke
    Хорошей учебы!

  17. Lazrdrk表示:

    Привет!
    Мы изготавливаем дипломы любых профессий по приятным ценам.
    projet-cuisine.fr/купить-диплом-новосибирск/

  18. ThomasDet表示:

    https://ciprodelivery.pro/# buy generic ciprofloxacin

  19. Razrstt表示:

    Здравствуйте!
    Мы предлагаем заказать диплом высокого качества, который невозможно отличить от оригинала без использования специального оборудования и квалифицированного специалиста.
    барс48.рф/forums.php?m=posts&q=22376&n=last#bottom
    Удачи!

  20. Cazrxuw表示:

    Здравствуйте!
    Мы предлагаем документы техникумов, которые расположены в любом регионе Российской Федерации. Можно купить качественно напечатанный диплом за любой год, включая сюда документы старого образца СССР. Документы выпускаются на “правильной” бумаге высшего качества. Это дает возможности делать настоящие дипломы, которые не отличить от оригинала. Они заверяются необходимыми печатями и штампами.
    ifgieobny.sharebyblog.com/28173723/%D0%9A%D0%B0%D0%BA-%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE-%D0%B1%D1%83%D0%B4%D0%B5%D1%82-%D0%BD%D0%B5%D0%B4%D0%BE%D1%80%D0%BE%D0%B3%D0%BE-%D0%BF%D1%80%D0%B8%D0%BE%D0%B1%D1%80%D0%B5%D1%81%D1%82%D0%B8-%D0%B0%D1%82%D1%82%D0%B5%D1%81%D1%82%D0%B0%D1%82-%D0%B2-%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%D0%B5

  21. Mesothelioma lawyers assist the victims and their families throughout the legal process.
    They prepare cases, file lawsuits, and Asbestos Settlement trust claims.
    They also negotiate settlements, and fight for a fair trial.

  22. ngentot memek表示:

    Good post. I learn something totally new and challenging on websites I stumbleupon every day. It will always be interesting to read through articles from other writers and practice something from other websites.

  23. Sazrxyu表示:

    Привет!
    Аттестат школы купить официально с упрощенным обучением в Москве
    dopalnenie.listbb.ru/viewtopic.php?f=3&t=710
    Будем рады вам помочь!

  24. 10 Best Books On Volvo Digger Key Volvo Xc90 Key

  25. Xazrcwv表示:

    Здравствуйте!
    Всё о покупке диплома о высшем образовании: полезные советы
    landik-diploms-srednee.ru/kupit-diplom-v-novosibirske  

  26. Adhd Assessment Adult Tips That Will Transform Your Life
    Adult Adhd Assessment

  27. Why You Should Focus On Making Improvements In American-Style Fridge cheap
    Fridges uk (fridge-Freezers02421.signalwiki.com)

  28. ThomasDet表示:

    http://amoxildelivery.pro/# where to buy amoxicillin 500mg

發佈留言

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