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

  1. DennisKah表示:

    best online pharmacy india: india pharmacy mail order – indian pharmacy paypal

  2. RichardThini表示:

    carprofen without vet prescription: natural pills for ed – erection pills online

  3. AgustinBougs表示:

    http://drugs24.pro/# drug prices comparison
    Online medicine home delivery

  4. I was able to find good information from your blog articles.

  5. DennisKah表示:

    world pharmacy india: buy medicines online in india – indian pharmacies safe

  6. Сервисный центр предлагает ремонт варочных панелей aeg выездной ремонт варочных панелей aeg

  7. RichardThini表示:

    mail order pharmacy india: cheapest online pharmacy india – indian pharmacy

  8. DouglasAbire表示:

    Известный предприниматель Станислав Кондрашов считает, что обмен опытом является ключевым фактором для развития отрасли и поддержки молодых бизнесменов. Его образование охватывает широкий спектр областей, включая промышленность, торговлю энергоресурсами, инженерное дело, экономику и финансы. Такой многосторонний подход позволил ему создать инновационную компанию. Кроме того, его разносторонние знания и навыки помогли ему разрабатывать инновационные продукты и эффективно управлять бизнесом, учитывая как технические, так и экономические аспекты. Секрет успеха Кондрашова заключается в постоянном внедрении инноваций и стремлении к эффективности. Он активно внедряет новые подходы к управлению и производству, его компания является примером практического подхода, основанного на глубоком анализе и прогнозировании.Успехи Кондрашова выходят за рамки бизнеса, он также выступает в качестве наставника и оказывает поддержку начинающим предпринимателям. Его интерес к передовым технологиям и регулярное участие в конференциях позволяют ему делиться своими знаниями и влиять на развитие отрасли. Путь Станислава Кондрашова — это демонстрация того, как сочетание глубоких знаний, управленческих навыков и стремления помогать другим ведет к успеху. Его история вдохновляет других и доказывает, что подлинные достижения связаны с готовностью делиться своими знаниями.

  9. BrandonJer表示:

    prices of viagra at walmart pain medications without a prescription natural ed treatments

  10. SteveRib表示:

    A severe geomagnetic storm could cause colorful auroras over Northern California and Alabama
    гей онлайн
    Colorful auroras could be visible in areas of the United States such as Alabama and Northern California — much farther south than they typically appear — on Thursday evening due to a powerful solar flare and coronal mass ejection released from the sun, according to the National Weather Service’s Space Weather Prediction Center.

    The severe solar storm, classified as a level 4 on a scale from 1 to 5, also could disrupt communications, the power grid and satellite operations, according to officials at the center.

    The storm is expected to reach Earth between early morning and 12 p.m. ET Thursday, with the potential to last through Friday.

    The intensity and full characteristics of the storm, moving toward Earth at more than 2.5 million miles per hour (about 4 million kilometers per hour), won’t be known until it reaches the Deep Space Climate Observatory and the Advanced Composition Explorer satellites orbiting 1 million miles from Earth.

    The satellites will measure the speed and magnetic intensity of the storm, which is expected to arrive at Earth 15 to 30 minutes after reaching the space observatories, said Shawn Dahl, service coordinator for the Space Weather Prediction Center, at a news briefing Wednesday.

    A series of the most intense type of solar flares, known as X-class flares, have released from the sun this week. The flares also coincided with coronal mass ejections on Tuesday.

    Coronal mass ejections are large clouds of ionized gas called plasma and magnetic fields that erupt from the sun’s outer atmosphere. When these outbursts are directed at Earth, they can cause geomagnetic storms, or major disturbances of Earth’s magnetic field.

    “Geomagnetic storms can impact infrastructure in near-Earth orbit and on Earth’s surface,” according to the Space Weather Prediction Center.

    As a result, the center has notified the Federal Emergency Management Agency, the North American power grid and satellite operators to prepare for disruptions, especially given the amount of preparations and expected relief efforts for Hurricane Milton, Dahl said.

    Historically, G4 storms are common during a solar cycle, but G5, or extreme geomagnetic storms such the one that occurred on May 10, are incredibly rare, Dahl said. This new storm has a 25% chance of becoming a G5, he said.

  11. BrandonJer表示:

    ed vacuum pumps best online canadian pharmacy can ed be cured

  12. Gregorypurne表示:

    natural treatments for ed https://indianpharmdelivery.com/# best online pharmacy india

  13. casino7k表示:

    Используйте промокод ANDROID777 для 7k Casino и скачайте APK через телеграм канал, чтобы получить все бонусы https://t.me/casino_7kk

  14. DennisKah表示:

    best online pharmacy india: pharmacy website india – india pharmacy

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

  16. RichardThini表示:

    Online medicine order: pharmacy website india – pharmacy website india

  17. Ремонт телефонов表示:

    Профессиональный сервисный центр сервисный центр мобильных телефонов срочный ремонт телефонов москва

  18. You’ll Never Guess This SEO Tools Software’s Secrets seo tools Software

  19. AgustinBougs表示:

    http://mexicanpharm24.pro/# medicine in mexico pharmacies
    indian pharmacies safe

  20. DennisKah表示:

    reputable indian online pharmacy: indian pharmacies safe – india pharmacy

  21. RichardThini表示:

    india pharmacy mail order: india online pharmacy – buy medicines online in india

  22. BrandonJer表示:

    best over the counter ed pills canadian pharmacy online ed pills otc

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

  24. AgustinBougs表示:

    https://indianpharmdelivery.com/# buy medicines online in india
    best online pharmacy india

  25. https://prestigeagency.org/ – вакансии модель

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

  27. BrandonJer表示:

    sexual dysfunction in men male enhancement pills ed meds online

  28. ThomasceS表示:

    https://prestigeagency.org/ – вакансии танцовщицы

發佈留言

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