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

  1. JamesMix表示:

    farmacias online seguras en espaГ±a: farmacia online internacional – farmacia online 24 horas

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

  3. DennisRep表示:

    https://sildenafilo.men/# viagra online cerca de la coruГ±a

  4. FloydDwent表示:

    https://sildenafilo.men/# venta de viagra a domicilio
    farmacia online espaГ±a envГ­o internacional

  5. Normanfer表示:

    sildenafilo 50 mg comprar online: viagra generico – sildenafilo precio farmacia

  6. Если вы искали где отремонтировать сломаную технику, обратите внимание – тех профи

  7. Rosaura表示:

    Corner Wood Burning Stove: 11 Thing You’re Leaving Out woodburner (Rosaura)

  8. Sink leaking表示:

    I will right away grab your rss feed as I can’t to find your email subscription hyperlink or e-newsletter service. Do you have any? Please permit me understand in order that I could subscribe. Thanks.

  9. Если вы искали где отремонтировать сломаную технику, обратите внимание – профи ремонт

  10. Seduction approach in general is usually an total solution regarding losers, males and females exactly who maintain small self-esteem, people looking for work and also commercial travellers. Folks that will be in enormous requirement assist, with regard to recording the actual minds on the individuals they will usually needed will probably be overpowered if they the real reason for wander belonging to the so-called seduction method. Thus choose, as well as reveal the seduction strategy to your friends which you are aware of are generally enduring numerous encumbrance of their life. You’ll be able to completely end up being with superb help in fixing that miseries that belongs to them life.

  11. irccmsyul表示:

    Write the numbers down in a vertical fashion. Each number below the other and all the decimal points lined up. It is important to line up the decimals so that the addition can take place smoothly. This small dot, known as the decimal, changes everything about a number – it reduces its value and changes how you add, subtracts, multiplies and divide it. For example, the number 456 has a very different value as compared to the number 45.6 – even though all that apparently changes here is the presence of a small dot. In fact, not only this, but the decimal position also has a lot to do here. For example, 4.56 is a whole new number even though all we did was changed the position of the decimal point. On each page, there is one decimal addition problem, plus space to solve the problem by:
    https://www.theexeterdaily.co.uk/users/afidonbi1988
    Our MOE-trained Higher Education Mathematics Degree holders (Masters or PhD) are tutors with at least 3 years of experience teaching Mathematics either in schools or privately. Their schedules are more limited and may not always be available. At the Junior college level, students will take up H1 Math, H2 Math, or even H3 Math. The difficulty of these exams are sky-high and require an understanding of very advanced math topics such as Complex Numbers and Statistics. We find that JC students learn best from one to one math tuition as the complexity of questions require students to be able to ask questions and get personal guidance. So if your child is in JC1 or JC2, please call us at +65 6266 4475 for a free consultation about Maths Tuition A level for your child.

  12. JamesMix表示:

    farmacia en casa online descuento: comprar cialis online sin receta – farmacia online envГ­o gratis

  13. LCD TVs can really save you from high electricity bills and office space;

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

  15. Normanfer表示:

    farmacia online barcelona: farmacia envio gratis – farmacia online envГ­o gratis

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

  17. FloydDwent表示:

    https://farmaciaeu.com/# farmacia online madrid
    farmacias direct

  18. Если вы искали где отремонтировать сломаную технику, обратите внимание – [url=https://tyumen.profi-teh-remont.ru]профи тюмень[/url]

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

  20. Normanfer表示:

    farmacias online seguras: farmacia online 24 horas – farmacia online barata

  21. JamesMix表示:

    sildenafilo sandoz 100 mg precio: viagra generico – viagra online gibraltar

  22. DennisRep表示:

    http://tadalafilo.bid/# farmacia en casa online descuento

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

  24. Saved as a favorite, I love your web site!

  25. Если вы искали где отремонтировать сломаную технику, обратите внимание – ремонт бытовой техники

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

  27. RonaldDrorm表示:

    farmacia online barata Cialis precio farmacia online barcelona

  28. RonaldDrorm表示:

    sildenafilo precio farmacia sildenafilo viagra online gibraltar

發佈留言

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