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>
zithromax 1000 mg online: can you buy zithromax over the counter in mexico – zithromax 250 mg
lisinopril 50 mg tablet lisinopril 40 mg daily zestril 20 mg
BJ88
cytotec pills buy online: buy cytotec over the counter – Misoprostol 200 mg buy online
https://ciprofloxacin.cheap/# buy cipro online canada
Собственное производство металлоконструкций. Если вас интересует Навесы к дому на заказ мы предлогаем изготовление под ключ навес для одной машины
Неотразимый стиль современных тактичных штанов, как носить их с другой одеждой.
Неотъемлемая часть гардероба – тактичные штаны, которые подчеркнут ваш стиль и индивидуальность.
Как найти идеальные тактичные штаны, который подчеркнет вашу уверенность и статус.
Тактичные штаны для активного отдыха: важный элемент гардероба, которые подчеркнут вашу спортивную натуру.
Как выбрать тактичные штаны под свой стиль?, чтобы подчеркнуть свою уникальность и индивидуальность.
История появления тактичных штанов, которые подчеркнут ваш вкус и качество вашей одежды.
Сочетание стиля и практичности в тактичных штанах, которые подчеркнут ваш профессионализм и серьезность.
купити штани тактичні https://dffrgrgrgdhajshf.com.ua/ .
Современные тактичные штаны: выбор успешных мужчин, как выбрать их с другой одеждой.
Секрет комфорта в тактичных штанах, которые подчеркнут ваш стиль и индивидуальность.
Как найти идеальные тактичные штаны, который подчеркнет вашу уверенность и статус.
Лучшие модели тактичных штанов для мужчин, которые подчеркнут вашу спортивную натуру.
Тактичные штаны: какой фасон выбрать?, чтобы подчеркнуть свою уникальность и индивидуальность.
Тактичные штаны: вечная классика мужского гардероба, которые подчеркнут ваш вкус и качество вашей одежды.
Сочетание стиля и практичности в тактичных штанах, которые подчеркнут ваш профессионализм и серьезность.
американські тактичні штани https://dffrgrgrgdhajshf.com.ua/ .
Собственное производство металлоконструкций. Если вас интересует Навесы в Выборге мы предлогаем изготовление под ключ Кованые навесы к дому
Articles with informative content like yours are a breath of fresh air. I thoroughly enjoyed every thought you made in your material. I am with you on your original views and unique content. Thank you.
buy cytotec online fast delivery: cytotec pills buy online – buy cytotec pills online cheap
Собственное производство металлоконструкций. Если вас интересует купить навесы из поликарбоната для автомобилей мы предлогаем изготовление под ключ навесы из поликарбоната заказать
get cheap clomid online get cheap clomid without rx can you get clomid for sale
buy generic zithromax online zithromax 500 price can you buy zithromax over the counter in australia
buy azithromycin zithromax: zithromax without prescription – order zithromax without prescription
can i buy zithromax over the counter zithromax 500 without prescription where can i buy zithromax capsules
https://lisinoprilus.com/# lisinopril average cost
ciprofloxacin order online: buy cipro online canada – ciprofloxacin generic price
Go88
https://bj8883.com/
I have seen a lot of useful points on your site about pc’s. However, I’ve the thoughts and opinions that notebooks are still not nearly powerful sufficiently to be a sensible choice if you frequently do jobs that require lots of power, for example video editing and enhancing. But for world wide web surfing, statement processing, and a lot other prevalent computer work they are just great, provided you do not mind the little screen size. Many thanks sharing your ideas.
lisinopril 10 mg coupon: lisinopril 5 mg price – lisinopril 20mg 37.5mg
BJ88
cytotec online: buy cytotec pills online cheap – cytotec pills buy online
Simply wanna remark that you have a very decent site, I enjoy the design and style it really stands out.
https://azithromycinus.com/# zithromax capsules 250mg
lisinopril 10 best price: medication zestoretic – where to buy lisinopril
cheapest price for lisinopril india: lisinopril 20 mg no prescription – zestril 10mg
http://ciprofloxacin.cheap/# where can i buy cipro online
can you buy generic clomid without a prescription: how to get generic clomid without prescription – can i get clomid without rx