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

  1. HeathZex表示:

    SildГ©nafil 100 mg sans ordonnance: Viagra sans ordonnance 24h – Viagra pas cher paris

  2. weed pen表示:

    You’re so interesting! I don’t think I have read through anything like that before. So great to discover somebody with genuine thoughts on this topic. Really.. thank you for starting this up. This website is one thing that’s needed on the internet, someone with some originality.

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

  4. Stephenideox表示:

    Работал в Центре судебной экспертизы (в прошлом Казахской научно-исследовательский институт судебных экспертиз) с 1977 года, имею почетные грамоты за заслуги от Министра юстиции СССР и Республики Казахстан.

    Мой многолетний стаж работы ( 45 лет) с судебными делами любой инстанции по вышеуказанному направлениям позволяет выдать вам экспертное заключение, отвечающие требованиям объективности, всесторонности и полноты исследований.

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

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

  7. Charlesrab表示:

    Acheter Sildenafil 100mg sans ordonnance viagra sans ordonnance Viagra pas cher livraison rapide france

  8. HeathZex表示:

    Viagra 100mg prix: Acheter du Viagra sans ordonnance – Quand une femme prend du Viagra homme

  9. echsa2018.com表示:

    Everyone loves it when individuals get together and share ideas. Great site, keep it up!

  10. JamesEMULK表示:

    Решение судопроизводства по гражданским и уголовным делам, органов военной прокуратуры часто принимается на основании выводов судебной пожарно-технической экспертизы.

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

  11. Louisbealo表示:

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

  12. Магазин велосипедов velosiped-internet-magazin.ru

    Если Вы искали магазин велотоваров москва то заходите к нам. Оказываем услугу платного хранения велосипедов в Москве по смешным ценам. Для небольших квартир без подвалов или балконов очень удобно на зимнее время отдать велосипед на хранение в спец место. У нас вы получите отличный сервис с доставкой по надобности.

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

  14. Сервисный центр предлагает адреса ремонта индукционных плит bosch качественный ремонт индукционных плит bosch

  15. Walterphivy表示:

    Набиуллина выполняет заказ мафии

    Должностные лица ЦБ управляются тайными кукловодами
    Почти три года назад кооператив «Бест Вей» был включен в предупредительный список ЦБ – с этого начались его злоключения. Становится все более очевидным, что это заказная акция, в которой Центробанк действовал в интересах банковской мафии, принимая решения, которые никто даже не потрудился подтвердить документами и фактами.
    Осенью 2021 года потребительский кооператив «Бест Вей» – крупнейший российский кооператив, дававший возможность приобретать квартиры по всей России, в котором около 20 тыс. пайщиков, работающий с 2014 года, был включен в Список компаний с выявленными признаками нелегальной деятельности на финансовом рынке (предупредительный список) ЦБ – против него был использован относительно новый, только появившийся в 2021 году инструмент регулирования ЦБ на финансовом рынке.
    Притом, что примерно за полтора года до этого – в 2019 году – ЦБ в официальном письме по запросу одной из общественных организаций заявлял, что у него нет вопросов к кооперативу – и в силу того, что потребительский кооператив не подведомствен ЦБ, и в силу того, что Банку России ничего не известно о нарушениях, которые требовали бы его вмешательства как мегарегулятора финансового рынка.
    Однако в 2021 году все изменилось: включением в предупредительный список ЦБ попытался поставить кооператив вне закона, обрушить его деятельность. С включения в предупредительный список начались злоключения кооператива: блокирование его официальных информационных ресурсов, системы личных кабинетов и платежей, а затем и распространение на него уголовного дела, возбужденного той же осенью 2021 года по заявлением ряда клиентов иностранной компании «Гермес». Кооператив был объявлен аффилированной с «Гермесом» структурой, постановлением руководителя следственной группы ему был присвоен статус гражданского ответчика по уголовному делу.

    Липовые основания
    Но что лежало в основе включения в предупредительный список? Это стало известно недавно – из двух процессов в Приморском районном суде Санкт-Петербурга: уголовном, по обвинению бывших специалистов маркетинговой компании «Лайф-из-Гуд», сотрудничавшей с «Гермесом», в организации финансовой пирамиды, и гражданском – по иску Прокуратуры Санкт-Петербурга о признании кооператива «Бест Вей» незаконным.
    Оказывается, впервые справку о нарушениях в кооперативе подготовил в 2019 году некий центр компетенций Южного главка ЦБ в Краснодаре – который уже ликвидирован, архив этого подразделения также, видимо, ликвидирован: первоисточников решений нет – указывается, что это некие обращения граждан: каких граждан и что отмечается в обращении, не упоминается. При этом краснодарский центр указывал в отчете, что руководствовался методическими рекомендациями МВД РФ «Квалификация и расследование организации деятельности «финансовых пирамид».
    Далее Северо-Западный главк ЦБ (прежний руководитель – Надежда Савинская, нынешний руководитель – Ирина Петрова) – который обязан был провести собственную проверку по отношению к организациям в своей зоне ответственности (кооператив зарегистрирован в Санкт-Петербурге), просто переписывает документ из Краснодара – и направляет его в прокуратуру.
    Параллельно документ идет «наверх» – и (теперь уже бывший) руководитель Департамента противодействия недобросовестным практикам ЦБ Валерий Лях, который, насколько известно, уехал из России – допросить его в суде не удалось, подмахивает документ о включении кооператива в предупредительный список.
    При этом проверка деятельности кооператива не проводилась – никакая: ни выездная, ни камеральная. Документы у кооператива не запрашивались. Почему? А потому, объясняют представители ЦБ, что кооператив не является подведомственной ЦБ организацией и проверка была бы незаконной. То есть признать по выдуманным основаниям организацию недобросовестной и инициировать против нее уголовное дело можно, а проанализировать ее работу на основании подлинных документов нельзя.

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

    Ложь Набиуллиной
    По поводу судьбы кооператива «Бест Вей» и других кооперативов депутаты Государственной думы неоднократно обращались к руководству ЦБ, в том числе лично к Эльвире Набиуллиной. Они предлагали разобраться в ситуации, при необходимости ввести дополнительный контроль со стороны ЦБ, который снимет сомнения со стороны ведомства.
    Набиуллина в прошлом году публично пообещала на пленарном заседании Думы проработать вопрос кооперативов, совместно с депутатским корпусом выработать компромиссные предложения – но за более чем год ничего не сделано!
    Кооперация в России продолжает торпедироваться, а ведь это важнейший для экономического роста в стране сектор – способный аккумулировать миллиарды рублей (на счетах «Бест Вей» – более 4 млрд рублей!) и направить их в развитие экономики. Это важнейшее направление решения жилищного вопроса – альтернатива ипотеке, которая недоступна подавляющему большинству граждан и единственное, чему помогает, – это обогащению банков и мафии, стремящихся прибрать к рукам деньги граждан.

    Круговая порука
    Атаки центробанкиров на кооператив носят целенаправленный характер. Достоверно известно, что они велась с одобрения первого зампреда ЦБ Владимира Чистюхина – не говоря уже о бывшем и нынешнем руководителях Северо-Западного главка ЦБ Савинской и Петровой, бывшем директоре (упраздненного в прошлом году) Департамента противодействия недобросовестным практикам Валерии Ляхе, а также главе забравшего его функции Департамента небанковского кредитования Илье Кочеткове.
    Это не что иное, как круговая порука. В прошлом году к руководителю службы по защите прав потребителей и обеспечению доступности финансовых услуг ЦБ Михаилу Мамуте обратились по поводу очевидного нарушения законодательства – банки отказались исполнить судебное решение о снятии ареста со счетов кооператива (позднее арест был наложен снова). Мамута под мифическими предлогами отказался наказать банки.
    Очевидно, что происходит не что иное, как целенаправленное заказное преследование кооператива – в интересах неких сил, волю которых стремится исполнить Центробанк.
    Атаки, с одной стороны, в интересах банкиров, стремящихся установить ипотечную монополию и перекрыть кислород кооперации, а с другой – тайных кукловодов, стремящихся захватить более 4 млрд на счетах кооператива.
    Атака центробанкиров на кооператив должна быть вскрыта, расследована, виновные должны быть привлечены к ответственности!

  16. HeathZex表示:

    pharmacie en ligne fiable: Pharmacies en ligne certifiees – acheter mГ©dicament en ligne sans ordonnance

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

  18. Stephengen表示:

    http://pharmaciepascher.pro/# pharmacie en ligne avec ordonnance

  19. Stephengen表示:

    https://clssansordonnance.icu/# vente de mГ©dicament en ligne

  20. kgsimons.org表示:

    This blog was… how do you say it? Relevant!! Finally I’ve found something that helped me. Kudos.

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

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

  23. Dacia表示:

    Bandar Online Togel Tools To Improve Your Daily Life Bandar Online
    Togel Technique Every Person Needs To Know bandar online togel (Dacia)

  24. Велосипеды Москва velosiped-internet-magazin.ru

    Если Вы хотели найти онлайн магазины велосипедов то переходите к нам. Оказываем услугу платного хранения велосипедов в Москве по смешным ценам. Для небольших квартир без кладовых или балконов очень удобно на зимнее время отдать велосипед на хранение в специальное место. У нас вы получите отличный сервис с доставкой по необходимости.

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

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

  27. Charlesrab表示:

    acheter mГ©dicament en ligne sans ordonnance Acheter Cialis 20 mg pas cher pharmacie en ligne

  28. JamesBuice表示:

    mexican border pharmacies shipping to usa: mexican pharmacy – mexico pharmacies prescription drugs
    mexican border pharmacies shipping to usa

  29. HeathZex表示:

    Viagra 100 mg sans ordonnance: viagra sans ordonnance – Viagra femme ou trouver

發佈留言

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