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

  1. Manrqbu表示:

    Здравствуйте!
    Где заказать диплом специалиста?
    Мы готовы предложить документы ВУЗов, которые находятся в любом регионе России. Вы имеете возможность купить диплом за любой год, указав подходящую специальность и оценки за все дисциплины. Дипломы печатаются на бумаге самого высокого качества. Это дает возможность делать государственные дипломы, не отличимые от оригиналов. Документы заверяются всеми необходимыми печатями и подписями.
    Мы изготавливаем дипломы любых профессий по приятным тарифам.
    asxdiplomik.com/kupit-diplom-nizhnij-novgorod
    Окажем помощь!

  2. Wazrozd表示:

    Добрый день!
    Мы можем предложить документы ВУЗов, которые находятся на территории всей России. Можно приобрести качественно напечатанный диплом за любой год, включая документы старого образца СССР. Дипломы и аттестаты выпускаются на бумаге самого высшего качества. Это дает возможности делать государственные дипломы, не отличимые от оригинала. Они будут заверены необходимыми печатями и штампами.
    obozrevatelevents.ru/page/11

  3. tubidy表示:

    After exploring a number of the articles on your website, I really appreciate your way of writing a blog. I saved as a favorite it to my bookmark site list and will be checking back soon. Please visit my web site as well and let me know your opinion.

  4. Diplomi_hbei表示:

    купить диплом москва сколько ast-diploms.com .

  5. I really like looking through a post that will make people think. Also, thanks for allowing me to comment.

  6. Trefigi表示:

    Добрый день!
    Всё, что нужно знать о покупке аттестата о среднем образовании
    mosoblzerno.ru/index.php?subaction=userinfo&user=uduvy
    Будем рады вам помочь!.

  7. Lariorfhy表示:

    Как официально купить диплом вуза с упрощенным обучением в Москве
    ast-diploms.com/kupit-diplom-moskva

  8. Qazramx表示:

    Добрый день!
    Где купить диплом по нужной специальности?
    Наши специалисты предлагают выгодно и быстро купить диплом, который выполняется на оригинальном бланке и заверен мокрыми печатями, штампами, подписями. Наш диплом способен пройти лубую проверку, даже с применением специальных приборов. Решите свои задачи быстро и просто с нашей компанией.
    Купить диплом университета.
    uf37mcli4.newsbloger.com/28789596/%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%B1%D1%8B%D1%81%D1%82%D1%80%D0%BE-%D0%BF%D1%80%D0%B8%D0%BE%D0%B1%D1%80%D0%B5%D1%81%D1%82%D0%B8-%D0%B4%D0%B8%D0%BF%D0%BB%D0%BE%D0%BC-%D0%B2-%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%D0%B5

  9. Sazrdjn表示:

    Добрый день!
    Покупка диплома о среднем полном образовании: как избежать мошенничества?
    freedomrp.getbb.ru/posting.php?mode=post&f=110&sid=5635a09b05daabeb5a23546cb771081a
    Рады оказаться полезными!.

  10. goblok表示:

    How Togel Has Changed My Life The Better goblok

  11. Hello there! This blog post couldn’t be written much better! Looking through this post reminds me of my previous roommate! He continually kept preaching about this. I’ll send this article to him. Pretty sure he’ll have a great read. Thank you for sharing!

  12. Dnrtiol表示:

    Здравствуйте!
    Купить документ института вы сможете в нашей компании.
    asxdiplomik.com/otzyvy
    Удачи!

  13. Fazrzpf表示:

    Привет!
    Мы изготавливаем дипломы психологов, юристов, экономистов и других профессий по приятным тарифам. Стоимость зависит от конкретной специальности, года выпуска и образовательного учреждения.
    Где заказать диплом по актуальной специальности?
    Заказать диплом университета
    landik-diploms-srednee.ru/svidetelstvo-o-rozhdenii  
    Успешной учебы!

  14. Cazrcud表示:

    Здравствуйте!
    Мы готовы предложить документы техникумов, которые расположены в любом регионе Российской Федерации. Вы сможете заказать качественный диплом за любой год, указав подходящую специальность и оценки за все дисциплины. Документы выпускаются на “правильной” бумаге высшего качества. Это дает возможность делать настоящие дипломы, которые не отличить от оригиналов. Документы будут заверены необходимыми печатями и подписями.
    Купить диплом о высшем образовании.
    linkheed.com/blogs/3540/%D0%9A%D0%B0%D0%BA-%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%B4%D0%B8%D0%BF%D0%BB%D0%BE%D0%BC-%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
    Хорошей учебы!

  15. bestiptv1表示:

    Spot on with this write-up, I honestly believe that this site needs much more attention. I’ll probably be back again to see more, thanks for the information!

  16. Seven Simple Postulates About Bad Credit Loans Usually Are
    Often Overlooked 농협 무직자 대출

  17. Jamesbut表示:

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

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

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

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

    Именно в таких ситуациях, мы приходим на помощь и с помощью ЗАКОННЫХ методов правовой защиты, используя свой опыт полученный при ведении аналогичных военных дел добиваемся справедливости.

  18. Diplomi_zyEa表示:

    купить диплом новгород asxdiplomik.com/kupit-diplom-moskva .

  19. I really like looking through an article that will make people think. Also, thank you for allowing for me to comment.

  20. Iarioryow表示:

    Полезные советы по безопасной покупке диплома о высшем образовании
    xn--80aeahbdc6cr3b7h.xn--p1ai/club/user/8729/blog/193091/

  21. I blog often and I really appreciate your information. Your article has really peaked my interest. I am going to book mark your website and keep checking for new details about once a week. I opted in for your Feed too.

  22. Very good article. I am going through some of these issues as well..

  23. Ljxszy表示:

    verapamil online – tenoretic for sale tenoretic pills

  24. Sazroej表示:

    Здравствуйте!
    Как официально купить аттестат 11 класса с упрощенным обучением в Москве
    naijamatta.com/read-blog/20895
    Окажем помощь!.

  25. Trefett表示:

    Привет Друзья!
    Всегда думал что купить диплом о высшем образовании это миф и нереально, но все оказалось не так, изначально искал информацию про: купить диплом в белово, купить диплом в нижнем тагиле, купить диплом в находке, купить диплом оценщика, старые дипломы купить, потом про дипломы вузов, подробнее здесь https://houseinform.ru/forum/kupit_diplom_v_novosibirske
    Оказалось все возможно, официально со специальными условия по упрощенным программам, так и сделал и теперь у меня есть диплом вуза Москвы нового образца, что советую и вам!
    Удачи!

  26. Bvpxpu表示:

    buy arava 10mg without prescription – buy arava 10mg for sale cartidin generic

  27. memek表示:

    I really like looking through a post that will make people think. Also, thank you for allowing for me to comment.

  28. How Best Drug For Anxiety Disorder Was The Most Talked
    About Trend Of 2023 http://www.5097533.xyz

發佈留言

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