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

13,734 Responses

  1. Тут можно преобрести металлический навес в Санкт-Петербурге подробно на сайте двухскатный навес

  2. Тут можно преобрести купить сейф встраиваемый в стену встраиваемые сейфы купить

  3. Тут можно преобрести навес автомобильный в Санкт-Петербурге подробно на сайте навес металлический

  4. Rubengax表示:

    alo789 alo789hk alo789

  5. Josephsip表示:

    88bet slot: 188bet 88bet – 188bet 88bet

  6. Curtismence表示:

    https://k8viet.guru/# k8 th? dam

  7. Josephsip表示:

    alo789 dang nh?p: alo 789 – alo789 dang nh?p

  8. Josephsip表示:

    alo789 chinh th?c: alo789 chinh th?c – alo789in

  9. Josephsip表示:

    alo 789: dang nh?p alo789 – alo 789

  10. Curtismence表示:

    http://alo789.auction/# alo789in

  11. DexGuru表示:

    Analysts : Bitcoin experiencing ‘shakeout,’ not end of 4-year cycle

  12. Rubengax表示:

    link vao k8 k8vip k8 th? dam

  13. DavidPieda表示:

    check this link right here now download backpack

  14. Larryenern表示:

    Промокод Фонбет – это кодовые слова, например: MAX777, ввод которых при регистрации в БК Фонбет или в личном кабинете позволяет получить фрибеты, страховки ставок и другие специальные бонусы. Промокодом в беттинге называется комбинация букв и цифр, при вводе которых активируется бонус. Новым клиентам Фонбет предлагает приветственные фрибеты на сумму от 100 до 15 000 рублей.

    [url=https://belkover.by/image/pgs/promokod_fonbet_na_segodnya_bonus_do_15_000_rubley.html]промокод на бонусы фонбет на сегодня[/url]

  15. FritzGrach表示:

    [url=https://clubcoma.org/blog/1xbet_promo_code___welcome_bonus_1.html]wager bonus 1xbet[/url]

  16. Marioscern表示:

    click to find out more backpack extension

  17. Кэт казино промокод: CAT555 — бонус 375% на 3 депозита и 150 фриспинов при регистрации. Cat Casino — это популярная онлайн-платформа, которая радует своих пользователей щедрыми бонусами, акциями и уникальными промокодами. Если вы ищете способ увеличить свой игровой бюджет или просто хотите получить дополнительные преимущества, то промокоды Cat Casino — это то, что вам нужно. В этой статье мы подробно расскажем о всех доступных бонусах, акциях и особенностях использования промокодов в Cat Casino.

    Что такое Cat Casino Промокод?

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

    Как Использовать Промокод в Cat Casino?

    Cat casino промокод: CAT555 (код нужно вводить только при регистрации) Сегодня, новым игрокам в Cat casino за промокод будет начислен бонус в виде 100 фриспинов без депа и повышенный бонус на первый счёт до 27 000 рублей.

    Использовать промокод Cat Casino очень просто:

    Зарегистрируйтесь на официальном сайте Cat Casino.

    Перейдите в раздел «Акции» или «Бонусы».

    Введите промокод в специальное поле.

    Активируйте код и получите свой бонус.

    Важно помнить, что у каждого промокода есть свои условия использования. Например, минимальная сумма депозита или необходимость отыгрыша бонуса.

    Основные Бонусы и Акции Cat Casino

    Промокод казино Кэт: CAT555 — бонус за регистрацию 100% и 200 FS, а также 375% и 150 фриспинов. Cat Casino славится своими щедрыми акциями, которые доступны как новичкам, так и постоянным игрокам. Рассмотрим самые популярные из них:

    1. Приветственный Бонус
    Новые игроки могут получить приветственный бонус, который включает в себя дополнительные средства к первому депозиту и фриспины. Например, при пополнении счета на 1000 рублей вы можете получить 100% бонус и 50 фриспинов.

    2. Еженедельные Акции
    Cat Casino регулярно проводит акции, такие как «Кэшбэк за проигрыши» или «Двойной депозит». Участвуя в этих акциях, вы можете вернуть часть потерянных средств или увеличить свой игровой бюджет.

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

    4. VIP-Программа
    Для постоянных игроков Cat Casino предлагает VIP-программу, которая включает в себя персональные бонусы, повышенный кэшбэк и эксклюзивные промокоды.

    Как Получить Промокод Cat Casino?

    Промокоды Cat Casino можно получить несколькими способами:

    Подписаться на рассылку новостей казино.

    Следить за акциями в социальных сетях Cat Casino.

    Участвовать в турнирах и лотереях на сайте.

    Использовать партнерские сайты, которые сотрудничают с казино.

    Преимущества Использования Промокодов

    Использование промокодов в Cat Casino имеет множество преимуществ:

    Увеличение игрового бюджета.

    Возможность попробовать новые игры без риска.

    Дополнительные шансы на выигрыш.

    Участие в эксклюзивных акциях.

    Советы по Использованию Промокодов

    Чтобы максимально эффективно использовать промокоды Cat Casino, следуйте этим советам:

    Всегда проверяйте условия отыгрыша бонуса.

    Используйте промокоды только на те игры, которые вам нравятся.

    Следите за сроками действия промокодов.

    Не забывайте про VIP-программу, которая может увеличить ваши бонусы.

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

    Если вы ищете надежное казино с щедрыми бонусами, то Cat Casino — это именно то, что вам нужно. Не упустите возможность получить дополнительные фриспины, кэшбэк и другие приятные бонусы с помощью промокодов Cat Casino.

    [url=http://center-2.ru/forum/?mingleforumaction=viewtopic&t=19407#postid-37488]cat casino промокод 2025[/url]

  18. Gaylordstawn表示:

    Фонбет промокод: MAX777, используйте его при регистрации аккаунта. Новые пользователи могут активировать бонус и получить бездепозитный фрибет до 15 000 рублей. Воспользоваться бесплатно промокодами «Фонбет» для получения подарочной ставки или другого бонуса можно во время создания аккаунта на официальном сайте букмекерской конторы, а также после активации личного кабинета. Действующие промокоды могут давать зачисление кэшбэка на депозит, бесплатное пари и т.п.
    промокод на фонбет сегодня

發佈留言

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