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

10,925 Responses

  1. WillieRap表示:

    drug mart: drug mart – discount drug mart

  2. 24-часовая доставка спиртного внутри Москве: удобство или задача?

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

    Каким образом это работает?

    Круглосуточная доставка алкоголя в Москве производится через различные службы:

    Онлайн-платформы: Специализированные сайты и приложения, которые предлагают обширный ассортимент алкогольных напитков с доставкой на квартиру. Рестораны и бары: Отдельные заведения, обладающие разрешение на продажу спиртного, предлагают поставку своей товаров в вечернее время суток. Доставщики службы: Фирмы, которые сотрудничают с лицензированными продавцами спиртного и осуществляют поставку по требованию. Преимущества:

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

    Законность: В РФ запрещена продажа спиртного в вечернее время (с 23:00 до 8:00). Службы доставки, которые предлагают круглосуточную поставку, обычно используют различные схемы, которые могут оказаться незаконными. Употребление алкоголя: Простой доступ к спиртному в всякое время способен способствовать росту употребления, что может иметь отрицательные результаты для здоровья. Контроль за продажей несовершеннолетним: Существует риск, что доставщики могут не контролировать лета клиентов, что может вызвать к реализации спиртного несовершеннолетним.

  3. WillieRap表示:

    MegaIndiaPharm: Mega India Pharm – MegaIndiaPharm

  4. Charleskepsy表示:

    reputable online pharmacy no prescription http://discountdrugmart.pro/# drug mart

  5. MichaelGeony表示:

    canada online pharmacy no prescription https://xxlmexicanpharm.shop/# xxl mexican pharm

  6. MichaelGeony表示:

    canadian pharmacy no prescription needed https://discountdrugmart.pro/# discount drug mart pharmacy

  7. Davidmoits表示:

    Cheapest online pharmacy: online pharmacy delivery usa – online pharmacy delivery usa

  8. Davidmoits表示:

    Best online pharmacy: Best online pharmacy – Best online pharmacy

  9. WillieRap表示:

    Best online pharmacy: best online pharmacy no prescription – family pharmacy

  10. Charleskepsy表示:

    canada online pharmacy no prescription http://megaindiapharm.com/# pharmacy website india

  11. Porterfax表示:

    xxl mexican pharm medication from mexico pharmacy mexican border pharmacies shipping to usa

  12. Lannyhat表示:

    La variedad de juegos es impresionante.: winchile – winchile casino

  13. Davidzem表示:

    http://phtaya.tech/# The casino industry supports local economies significantly.
    Loyalty programs reward regular customers generously.

  14. Patrickspogs表示:

    Gaming regulations are overseen by PAGCOR.: taya365 – taya365

  15. JosephCyday表示:

    winchile winchile La competencia entre casinos beneficia a los jugadores.

  16. Patrickspogs表示:

    The Philippines has several world-class integrated resorts.: phmacao – phmacao

  17. Davidzem表示:

    https://taya365.art/# The casino scene is constantly evolving.
    Many casinos offer luxurious amenities and services.

  18. sát nhân表示:

    Introducing to you the most prestigious online entertainment address today. Visit now to experience now!

  19. Lannyhat表示:

    Players can enjoy high-stakes betting options.: phtaya login – phtaya

  20. Davidzem表示:

    http://phtaya.tech/# Promotions are advertised through social media channels.
    Online gaming is also growing in popularity.

  21. Lannyhat表示:

    Muchos casinos tienen salas de bingo.: win chile – winchile.pro

  22. Davidzem表示:

    https://phtaya.tech/# Resorts provide both gaming and relaxation options.
    Some casinos feature themed gaming areas.

  23. Patrickspogs表示:

    La pasiГіn por el juego une a personas.: win chile – winchile

  24. Предлагаем ремонт сигвеев leadway в Петербурге. Если у вас сломалась техника обращайтесь в сервис 911. Мы выполняем – Ремонт сигвеев Leadway профессионально, быстро и с гарантией!

  25. Patrickspogs表示:

    Casino visits are a popular tourist attraction.: taya365 login – taya365.art

  26. Williamgox表示:

    The ambiance is designed to excite players. http://phmacao.life/# A variety of gaming options cater to everyone.

  27. Lannyhat表示:

    La pasiГіn por el juego une a personas.: jugabet – jugabet chile

  28. JosephCyday表示:

    jugabet casino jugabet La adrenalina es parte del juego.

  29. Davidzem表示:

    http://phmacao.life/# Casinos offer delicious dining options on-site.
    Entertainment shows are common in casinos.

  30. Kennethgeoky表示:

    Within the always changing arena of SEO, software and tactics that can successfully enhance a website’s online visibility are in continuous need. Introduce XRumer, a modern software crafted to enhance link-building efforts. Using the ability to post on message boards, weblogs, guestbooks, and various platforms automatedly, XRumer transforms the way digital marketers handle off-page SEO. This strong tool circumvents common online obstacles like CAPTCHAs, ensuring an continuous and efficient backlink generation method. A well-executed XRumer SEO run could notably raise a site’s search engine rankings, driving organic traffic and elevating online visibility.

    Yet, while the capability of XRumer is unarguable, its use calls for a planned and wise strategy. Like all SEO software, the outcomes are just as excellent as the strategy behind them. Over-reliance or misuse might lead to undesirable results, including sanctions from search engines for forced link building. Thus, when starting on an XRumer SEO run, it’s vital to emphasize quality over volume, targeting related and high-authority sites that match with the brand’s ethos. In the grip of a proficient SEO expert, XRumer transforms into a powerful asset, connecting the gap between a brand and its online capability.

    https://seooptime.blogozz.com/27030824/Преимущества-использования-студии-xrumer-art

發佈留言

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