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>
certainnly likke yojr web-site hhowever youu have tto tke a
look at the splling on quite a feww of yor posts.
Maany off them aree rif with spelling problems andd I inn fiunding it very bothersoe to telll thee trhth however I will
surely cokme back again.
Hello aare using WordPress foor your site platform?
I’m nnew too the log world buut I’m tryiing too get started
andd set uup my own. Do youu need any ccoding xpertise to make
your owwn blog? Anny hel would be greatly appreciated!
Havve yoou ever cnsidered creating aan ebook orr guest authorinmg on other sites?
I hhave a blog based onn the same ideas youu disccuss and woulld llove tto havge you shyare slme stories/information. I knoiw my subscribdrs would appreciate yoiur work.
If you’re ven rwmotely interested, fel ree to sernd mme ann e mail.
I’m gone too inform my litle brother, tnat he
shjould also pay a quick visit this weblog on regular bassis tto gett updated frm latest reports.
Hello just wanted tto give youu a quck hads up. The
trxt inn your post seeem to bbe running ooff the screen inn Chrome.
I’m not sute iif this iis a formatting issue or somethingg to
do with bfowser compatibility but I figured I’d post to
leet yyou know. Thhe layyout look great though! Hopee you gget
tthe issue fixed soon. Cheers
When I originaply left a commen I appear too hav clicked oon thee -Nootify me when new comments
arre added- checkbox andd noww every tije a cmment iss added I receive four
emails wuth thhe saame comment. Perhaps thsre iss a means
yyou cann remove mee fdom that service?
Thanks!
Hey there aree using Wordress forr your site platform?
I’m new to thhe blog world buut I’m trying too gget started and seet upp myy
own. Do yyou need any htmml coding expertis too make
your own blog? Any heelp wouuld bee really appreciated!
Hey there! Do you know if they make any plugins to assist with SEO?
I’m trying to get my blog to rank for some targeted keywords but I’m not seeing
very good success. If you know of any please share. Thanks!
Embracing each other’s flaws and imperfections fosters a genuine and accepting connection.
Regular communication about expectations prevents misunderstandings and conflicts.
A date doesn’t always have to lead to a relationship.
Respecting each other’s differences fosters a harmonious and accepting relationship.
Setting and working towards common goals fosters a sense
of partnership and collaboration.
I convert easily and I can tell when my E is creeping up, cuz I get sloppy water cheap generic cialis 5, mild fatigue in 2
Roles Conceptualization, Data curation, Funding acquisition, Methodology, Project administration, Writing review editing viagra stories Poster Viewing Session II Saturday, September 11, 2021 12 55 PM 12 55 PM Exhibit Hall ePoster Hub Monitor 24
order aripiprazole 30 mg pill order abilify without prescription purchase aripiprazole pills
отель ассорти домодедово отели лазаревское все включено с бассейном
пансионат геленджик отдых в бассейне туапсинский район с ольгинка
цена отелей в сочи гостевой дом уют белокуриха каффа феодосия
белокуриха 1 железноводск машук
амра парк отель абхазия официальный сайт лазаревское дивное новосибирск гостиница азимут официальный сайт
мини отель сибирь тарко сале лучшие отели в москве 5 звезд солнечная база отдыха
отель ротас санкт петербург лонгасы
горячий ключ достопримечательности что стоит посмотреть родина гранд отель и спа сочи цены вилла елена ялта
каффа феодосия гостиница атаманская ростов на дону санкт петербург бульвар александра грина 1
альпийская долина алушта парус анапа официальный сайт цены
отели в кирише санатория волга сергиев посад спа
абхазия все включено хостел рус авиатор москва парк отель энгельс официальный
buy stromectol pills Indeed, these scholars the gender but with good erectile function, five domains of sexual orientation, wheatsheaf
can i order aripiprazole without dr prescription where to buy cheap aripiprazole prices aripiprazole pill