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

15,863 Responses

  1. AnthonyNum表示:

    Legit online Mexican pharmacy: mexican rx online – Cert Pharm

  2. Rodneytah表示:

    https://certpharm.com/# medication from mexico pharmacy

  3. Тут можно приобрести создание сайта больницы создание сайта для клиники

  4. Rodneytah表示:

    http://certpharm.com/# Best Mexican pharmacy online

  5. CalvinRhymn表示:

    mexican border pharmacies shipping to usa: mexican drugstore online – mexican pharmacy online

  6. AnthonyNum表示:

    Mexican Cert Pharm: Mexican Cert Pharm – mexican rx online

  7. Joshuareoto表示:

    mexican rx online https://certpharm.com/# mexican pharmacy online

  8. LarrykeW表示:

    Mexican Cert Pharm Legit online Mexican pharmacy Best Mexican pharmacy online

  9. Introducing to you the most prestigious online entertainment address today. Visit now to experience now!

  10. Тут можно приобрести создание сайта для медицинского центра создать сайт медицинского центра

  11. Introducing to you the most prestigious online entertainment address today. Visit now to experience now!

  12. Introducing to you the most prestigious online entertainment address today. Visit now to experience now!

  13. Тут можно преобрести разработка сайта больницы создать сайт клиники

  14. DonaldTyclE表示:

    Velocidad critica
    Sistemas de calibracion: importante para el desempeno suave y optimo de las maquinas.

    En el entorno de la ciencia actual, donde la productividad y la seguridad del dispositivo son de gran importancia, los equipos de balanceo tienen un funcion crucial. Estos dispositivos adaptados estan concebidos para ajustar y estabilizar componentes dinamicas, ya sea en herramientas productiva, vehiculos de transporte o incluso en equipos hogarenos.

    Para los tecnicos en mantenimiento de dispositivos y los ingenieros, trabajar con equipos de balanceo es importante para garantizar el funcionamiento estable y fiable de cualquier dispositivo dinamico. Gracias a estas soluciones innovadoras sofisticadas, es posible reducir significativamente las vibraciones, el estruendo y la carga sobre los cojinetes, mejorando la vida util de partes caros.

    Igualmente importante es el tarea que desempenan los dispositivos de balanceo en la asistencia al comprador. El asistencia especializado y el reparacion constante empleando estos dispositivos habilitan proporcionar prestaciones de gran estandar, elevando la agrado de los consumidores.

    Para los propietarios de empresas, la contribucion en sistemas de equilibrado y dispositivos puede ser esencial para aumentar la rendimiento y rendimiento de sus equipos. Esto es especialmente significativo para los empresarios que dirigen medianas y medianas organizaciones, donde cada elemento es relevante.

    Ademas, los dispositivos de balanceo tienen una vasta uso en el ambito de la prevencion y el control de calidad. Permiten encontrar probables defectos, reduciendo intervenciones caras y perjuicios a los sistemas. Incluso, los informacion obtenidos de estos dispositivos pueden utilizarse para perfeccionar procedimientos y aumentar la presencia en motores de busqueda.

    Las areas de uso de los sistemas de ajuste cubren diversas sectores, desde la produccion de vehiculos de dos ruedas hasta el supervision del medio ambiente. No influye si se trata de enormes producciones manufactureras o modestos establecimientos caseros, los dispositivos de equilibrado son necesarios para proteger un funcionamiento efectivo y sin presencia de detenciones.

  15. AnthonyNum表示:

    Best Mexican pharmacy online: Legit online Mexican pharmacy – Best Mexican pharmacy online

  16. Joshuareoto表示:

    buying from online mexican pharmacy https://certpharm.com/# Cert Pharm

  17. AnthonyNum表示:

    mexican pharmacy online: Legit online Mexican pharmacy – Best Mexican pharmacy online

  18. keonhacai表示:

    Introducing to you the most prestigious online entertainment address today. Visit now to experience now!

  19. Rodneytah表示:

    https://certpharm.shop/# buying prescription drugs in mexico online

  20. Introducing to you the most prestigious online entertainment address today. Visit now to experience now!

  21. Тут можно преобрести заказать сайт медицинской клиники разработка сайта медицинского центра

  22. Rodneytah表示:

    https://certpharm.com/# buying prescription drugs in mexico online

  23. Introducing to you the most prestigious online entertainment address today. Visit now to experience now!

  24. Joshuareoto表示:

    buying prescription drugs in mexico online https://certpharm.com/# Cert Pharm

  25. Introducing to you the most prestigious online entertainment address today. Visit now to experience now!

  26. Introducing to you the most prestigious online entertainment address today. Visit now to experience now!

  27. AnthonyNum表示:

    mexican pharmacy online: medication from mexico pharmacy – Best Mexican pharmacy online

  28. May88表示:

    Introducing to you the most prestigious online entertainment address today. Visit now to experience now!

  29. AnthonyNum表示:

    Mexican Cert Pharm: mexican pharmacy – Legit online Mexican pharmacy

  30. CalvinRhymn表示:

    buying prescription drugs in mexico online: mexican pharmacy – Legit online Mexican pharmacy

發佈回覆給「keonhacai」的留言 取消回覆

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