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

  1. AlbertBlelf表示:

    purple pharmacy mexico price list: purple pharmacy mexico price list – mexican mail order pharmacies

  2. Shaneevige表示:

    Thanks for sharing your thoughts. I truly appreciate your efforts and I am waiting for your next post thanks once again.
    http://server-attestats.com

  3. RobertZopof表示:

    mexican pharmacy: mexican rx online – purple pharmacy mexico price list

  4. Shaneevige表示:

    Hello I am so happy I found your site, I really found you by accident, while I was researching on Aol for something else, Anyhow I am here now and would just like to say thank you for a incredible post and a all round exciting blog (I also love the theme/design), I don’t have time to browse it all at the moment but I have saved it and also added your RSS feeds, so when I have time I will be back to read a great deal more, Please do keep up the great work.
    diplom07.ru

  5. RobertZopof表示:

    buying prescription drugs in mexico online: mexican drugstore online – buying prescription drugs in mexico

  6. Williamdet表示:

    http://mexicanpharmacy1st.com/# mexican online pharmacies prescription drugs

  7. RobertZopof表示:

    pharmacies in mexico that ship to usa: buying prescription drugs in mexico online – mexico drug stores pharmacies

  8. Williamdet表示:

    http://mexicanpharmacy1st.com/# purple pharmacy mexico price list

  9. Williamdet表示:

    http://mexicanpharmacy1st.com/# mexican pharmacy

  10. Ismaelfer表示:

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

  11. AlbertBlelf表示:

    mexico drug stores pharmacies: п»їbest mexican online pharmacies – buying from online mexican pharmacy

  12. EarnestAvada表示:

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

  13. ManuelinceX表示:

    buying from online mexican pharmacy mexico drug stores pharmacies mexican mail order pharmacies

  14. ManuelinceX表示:

    mexican pharmaceuticals online mexico drug stores pharmacies reputable mexican pharmacies online

  15. ManuelinceX表示:

    п»їbest mexican online pharmacies mexican pharmacy mexico drug stores pharmacies

  16. RobertZopof表示:

    best online pharmacies in mexico: pharmacies in mexico that ship to usa – purple pharmacy mexico price list

  17. EarnestAvada表示:

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

  18. RobertZopof表示:

    mexican pharmacy: mexico pharmacies prescription drugs – pharmacies in mexico that ship to usa

  19. Williamdet表示:

    https://mexicanpharmacy1st.com/# mexican pharmaceuticals online

  20. KennethProra表示:

    https://mexicanpharmacy1st.online/# mexican online pharmacies prescription drugs

  21. RobertZopof表示:

    purple pharmacy mexico price list: mexican pharmaceuticals online – buying prescription drugs in mexico online

  22. KennethProra表示:

    http://mexicanpharmacy1st.com/# mexican mail order pharmacies

  23. Ismaelfer表示:

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

  24. Charleselila表示:

    price for amoxicillin 875 mg: can you buy amoxicillin over the counter in canada – ampicillin amoxicillin

  25. Henryfet表示:

    zithromax buy: zithromax prescription online – zithromax azithromycin

  26. Charleselila表示:

    where to purchase doxycycline: generic for doxycycline – doxycycline monohydrate

  27. OLaneevige表示:

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

  28. Billyved表示:

    http://amoxila.pro/# amoxicillin 250 mg capsule

  29. MarvinRoave表示:

    how to buy amoxycillin amoxicillin online canada where can i buy amoxicillin online

發佈留言

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