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

  1. Zwvwhn表示:

    brand cialis subtle – zhewitra angry penisole face

  2. Henryfet表示:

    buy doxycycline cheap: doxycycline online – buy doxycycline online 270 tabs

  3. Billyved表示:

    https://amoxila.pro/# amoxicillin 500mg capsules price

  4. DichaelDax表示:

    В наше время, когда диплом становится началом отличной карьеры в любой отрасли, многие стараются найти максимально быстрый путь получения образования. Наличие официального документа об образовании сложно переоценить. Ведь именно диплом открывает дверь перед людьми, желающими начать профессиональную деятельность или учиться в ВУЗе.
    В данном контексте наша компания предлагает оперативно получить этот важный документ. Вы имеете возможность заказать диплом, и это становится выгодным решением для всех, кто не смог закончить обучение, потерял документ или хочет исправить свои оценки. диплом изготавливается аккуратно, с максимальным вниманием к мельчайшим деталям, чтобы в результате получился 100% оригинальный документ.
    Преимущества подобного решения состоят не только в том, что вы сможете оперативно получить диплом. Процесс организован удобно, с нашей поддержкой. Начиная от выбора требуемого образца диплома до консультации по заполнению личных данных и доставки по России — все под абсолютным контролем качественных специалистов.
    В результате, для всех, кто пытается найти максимально быстрый способ получить требуемый документ, наша услуга предлагает выгодное решение. Купить диплом – значит избежать долгого процесса обучения и сразу переходить к своим целям, будь то поступление в ВУЗ или начало трудовой карьеры.
    http://diplomvam.ru/

  5. Billyved表示:

    http://prednisoned.online/# prednisone without prescription medication

  6. Charleselila表示:

    amoxicillin 500 mg tablet price: amoxicillin generic – where can i buy amoxicillin online

  7. GichardPheve表示:

    Сегодня, когда диплом – это начало успешной карьеры в любом направлении, многие стараются найти максимально простой путь получения качественного образования. Наличие официального документа об образовании сложно переоценить. Ведь именно диплом открывает дверь перед каждым человеком, желающим вступить в профессиональное сообщество или учиться в высшем учебном заведении.
    Мы предлагаем очень быстро получить любой необходимый документ. Вы можете купить диплом старого или нового образца, и это становится выгодным решением для человека, который не смог закончить обучение, потерял документ или желает исправить свои оценки. Все дипломы производятся аккуратно, с особым вниманием ко всем нюансам. На выходе вы сможете получить полностью оригинальный документ.
    Преимущества такого решения заключаются не только в том, что можно оперативно получить свой диплом. Процесс организовывается просто и легко, с нашей поддержкой. От выбора необходимого образца диплома до точного заполнения персональных данных и доставки по стране — все под абсолютным контролем квалифицированных специалистов.
    Для всех, кто ищет оперативный способ получения необходимого документа, наша компания может предложить отличное решение. Купить диплом – значит избежать долгого процесса обучения и сразу переходить к достижению личных целей, будь то поступление в университет или начало успешной карьеры.
    vuzdiploma

  8. Richardorele表示:

    zithromax cost canada: zithromax cost canada – zithromax online usa

  9. Richardorele表示:

    buy amoxicillin online mexico: order amoxicillin uk – where can i buy amoxicillin over the counter

  10. MarvinRoave表示:

    how to get amoxicillin over the counter amoxicillin 500 mg online can you buy amoxicillin over the counter canada

  11. MarvinRoave表示:

    gabapentin 300 brand neurontin 100 mg canada canada neurontin 100mg discount

  12. MarvinRoave表示:

    prednisone rx coupon buy prednisone tablets online prednisone 20

  13. Henryfet表示:

    buy zithromax: zithromax azithromycin – zithromax online paypal

  14. Henryfet表示:

    buy doxycycline without prescription uk: doxycycline 200 mg – doxycycline 100mg online

  15. DichaelDax表示:

    Hey there! Do you know if they make any plugins to protect against hackers? I’m kinda paranoid about losing everything I’ve worked hard on. Any tips?
    https:/diploman-rossiya.com/

  16. Henryfet表示:

    purchase neurontin online: neurontin generic south africa – neurontin 330 mg

  17. Billyved表示:

    http://zithromaxa.store/# buy zithromax online

  18. Richardorele表示:

    purchase amoxicillin online without prescription: amoxicillin 50 mg tablets – amoxicillin 500mg prescription

  19. MarvinRoave表示:

    zithromax buy online no prescription zithromax generic cost generic zithromax online paypal

  20. Timsothyabela表示:

    В наше время, когда диплом является началом удачной карьеры в любой отрасли, многие пытаются найти максимально быстрый путь получения образования. Наличие документа об образовании переоценить просто невозможно. Ведь диплом открывает дверь перед всеми, кто собирается начать трудовую деятельность или продолжить обучение в ВУЗе.
    В данном контексте наша компания предлагает оперативно получить этот важный документ. Вы имеете возможность приобрести диплом, и это является отличным решением для человека, который не смог закончить обучение, потерял документ или желает исправить свои оценки. Все дипломы изготавливаются аккуратно, с максимальным вниманием к мельчайшим деталям. На выходе вы получите 100% оригинальный документ.
    Превосходство подобного решения заключается не только в том, что вы сможете оперативно получить диплом. Весь процесс организован удобно и легко, с профессиональной поддержкой. Начав от выбора подходящего образца диплома до консультаций по заполнению персональной информации и доставки в любое место страны — все под полным контролем квалифицированных мастеров.
    Таким образом, для тех, кто пытается найти быстрый способ получить требуемый документ, наша компания предлагает выгодное решение. Заказать диплом – это значит избежать длительного процесса обучения и сразу переходить к достижению собственных целей: к поступлению в университет или к началу успешной карьеры.
    https://diplomanc-russia24.com/

  21. MarvinRoave表示:

    zithromax buy online generic zithromax 500mg india buy zithromax online fast shipping

  22. Henryfet表示:

    doxycycline without prescription: buy doxycycline online without prescription – doxycycline 100mg tablets

  23. Billyved表示:

    https://amoxila.pro/# amoxicillin 500 mg online

  24. Henryfet表示:

    prednisone 10 mg over the counter: prednisone daily use – prednisone 15 mg daily

  25. Henryfet表示:

    amoxicillin generic brand: amoxicillin 500 mg online – amoxicillin for sale online

  26. Billyved表示:

    http://zithromaxa.store/# zithromax online usa no prescription

  27. Charleselila表示:

    neurontin generic cost: buy neurontin uk – neurontin 200

  28. Billyved表示:

    https://doxycyclinea.online/# where to get doxycycline

發佈留言

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