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>
п»їcytotec pills online https://lisinopril.guru/# zestril 30mg generic
lasix generic
buy cytotec over the counter https://cytotec.pro/# buy cytotec over the counter
lasix 40mg
buy cytotec in usa: buy cytotec online – buy cytotec
Good post! We are linking to this great post on our site. Keep up the great writing.
Здравствуйте!
Официальная покупка диплома ПТУ с упрощенной программой обучения
scientistsufo.ru/unikalnoe-obrazovanie-priobreti-diplom-kotoryiy-vyidelyaet-tebya-sredi-drugih
Здравствуйте!
Приобрести документ университета
fitomylo.ru/
Привет!
Купить диплом любого ВУЗа.
sportandpolitics.ukrbb.net/viewtopic.php?f=24&t=11454
Полезные советы по безопасной покупке диплома о высшем образовании
telegra.ph/kupit-diplom-v-kieve-08-13-7
Привет!
Заказать диплом ВУЗа .
telegra.ph/kupit-diplom-v-moskve-08-13-2
Всё, что нужно знать о покупке аттестата о среднем образовании
telegra.ph/diplom-ob-okonchanii-1-klassa-kupit-08-13-2
дом престарелых дом престарелых .
Удивительно, но купить диплом кандидата наук оказалось не так сложно
telegra.ph/kupit-diplom-pedagoga-cena-08-13
Привет!
Мы изготавливаем дипломы любой профессии.
Приобретение диплома, который подтверждает обучение в ВУЗе, – это выгодное решение.
carolinahurricanesclub.com/read-blog/738
Поможем вам всегда!.
Good post. I will be facing a few of these issues as well..
Привет, друзья!
Мы можем предложить документы ВУЗов
rf-isolation.ru/index.php?/topic/733-wr/#comment-4848
Привет, друзья!
Как избежать рисков при покупке диплома колледжа или ПТУ в России
mcforces.ru/o-skripte/1-post1
Будем рады вам помочь!.
Здравствуйте!
Купить документ института можно в нашем сервисе.
mamatyumen.ru/index.php?name=forums&op=showtopic&id=22647
Way cool! Some very valid points! I appreciate you penning this post plus the rest of the website is really good.
Здравствуйте!
Заказать диплом университета.
uberfashion.blog.br/animale-for-men-chega-em-formato-de-spray-corporal/perfumes-importados-masculino-perfume-animale-for-men-100-ml-p-1565207316459/#comment-1524344
buy cytotec pills online cheap http://tamoxifen.bid/# aromatase inhibitors tamoxifen
lasix
ремонт сотовых телефонов
order cytotec online https://lisinopril.guru/# lisinopril 60 mg daily
generic lasix
Привет!
Как получить диплом техникума официально и без лишних проблем
b24activities.ru/club/forum/messages/forum4/topic76/message105/?result=reply#message105
Здравствуйте!
Мы предлагаем дипломы психологов, юристов, экономистов и других профессий по приятным ценам.
telegra.ph/sroki-postupleniya-v-vuzy-2018-08-02
lipitor.com: Lipitor 10 mg price – lipitor no prescription
Привет, друзья!
Мы готовы предложить документы ВУЗов
o91746bp.beget.tech/2024/07/19/vashputkuspehusdiplomom
Привет!
Приобрести документ университета
rabotavinternete.forum2x2.ru/t55296-topic#137291
I needed to thank you for this wonderful read!! I certainly loved every bit of it. I have you book-marked to check out new things you post…
Добрый день!
Диплом магистра
telegra.ph/vliyaet-li-attestat-na-postuplenie-v-vuz-08-02
Привет!
Заказать диплом о высшем образовании
telegra.ph/s-kakogo-chisla-nachinaetsya-postuplenie-v-vuzy-08-02