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>
prednisone uk buy buying prednisone prednisone for sale without a prescription
http://amoxstar.com/# how much is amoxicillin prescription
can you get clomid online clomidonpharm can i get generic clomid prices
ciprofloxacin generic: CiPharmDelivery – buy cipro online without prescription
https://prednibest.com/# steroids prednisone for sale
https://amoxstar.com/# buying amoxicillin in mexico
Introducing to you the most prestigious online entertainment address today. Visit now to experience now!
purchase cipro: buy cipro without rx – buy cipro without rx
https://cipharmdelivery.com/# buy cipro online without prescription
Introducing to you the most prestigious online entertainment address today. Visit now to experience now!
amoxicillin medicine: Amox Star – buy amoxicillin canada
http://amoxstar.com/# amoxicillin discount
https://clomidonpharm.com/# can i get generic clomid pills
prednisone 20 tablet prednisone 10 mg canada 10 mg prednisone
http://amoxstar.com/# amoxicillin 500 mg without prescription
ciprofloxacin order online: purchase cipro – where to buy cipro online
clomid prices: clomid on pharm – how to buy cheap clomid no prescription
how can i get clomid prices clomid on pharm can you buy clomid without dr prescription
https://clomidonpharm.com/# where to get generic clomid online
https://clomidonpharm.com/# can i purchase clomid without rx
https://cipharmdelivery.com/# buy ciprofloxacin over the counter
Collage Master is definitely the fastest-growing on-line store for personalized gifts, offering unique and even customizable options intended for every occasion. No matter if you’re celebrating some sort of birthday, anniversary, or perhaps special event, we provide the perfect special canvas for your reminiscences. Our diverse choice of materials and even sizes helps to ensure that you can find the ideal collage to suit your wants.
Customers sing high prise of each of our user-friendly platform, which in turn allows them to upload photos and effortlessly customize their particular designs. With equipment to modify colors, layouts, and image placement, building a meaningful surprise has never been easier.
https://www.bignetindia.com/city-guide/address/collage-master
At Collage Master, all of us prioritize simplicity and quality, making it seamless for everyone in order to craft an ardent and one-of-a-kind surprise. Explore our selection today make your own order to produce a memorable experience for your loved ones.
https://cipharmdelivery.com/# cipro ciprofloxacin
buy amoxicillin 500mg online AmoxStar buy amoxicillin 500mg canada
Предлагаем услуги профессиональных инженеров офицальной мастерской.
Еслли вы искали ремонт телефонов vivo сервис, можете посмотреть на сайте: ремонт телефонов vivo цены
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!
generic prednisone online prednisone 50 mg coupon prednisone price south africa
https://cipharmdelivery.com/# ciprofloxacin 500mg buy online
natural ed cures: Best Canadian pharmacy – buy cheap prescription drugs online
reputable mexican pharmacies online: mexican pharmacy – mexican online pharmacies prescription drugs
Предлагаем услуги профессиональных инженеров офицальной мастерской.
Еслли вы искали ремонт телефонов xiaomi, можете посмотреть на сайте: ремонт телефонов xiaomi рядом
Наши мастера оперативно устранят неисправности вашего устройства в сервисе или с выездом на дом!