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>
10 Facts About Malpractice Lawsuit That Insists On Putting You In An Optimistic Mood malpractice lawsuits
Hello, after reading this remarkable article i am as well happy to share my familiarity here with mates.
mysoccerex.com/tag/football-club/В
bancaanxudoithuong3d.com/category/game-ban-ca-doi-the?filter_by=popular7В
templateinspire.com/opencart/Lingerie/index.php?route=information/blogger&blogger_id=2В
shop.electricoresigns.com/index.php?route=information/blogger&blogger_id=6В
http://www.sabalsuppliers.com.np/product/view/6-zone-fire-alarm-panelВ
Spot lets start work on this write-up, I actually feel this site requirements a great deal more consideration. I’ll likely to end up again to see a great deal more, many thanks for that information.
Real informative and great complex body part of articles, now that’s user friendly (:.
“A Guide To Truck Accident Attorneys In 2022 Truck accidents
Love your site. have you got the theme you used that you can share?
Wow, awesome weblog layout! How lengthy have you been running a blog for? you made blogging look easy. The whole look of your website is wonderful, let alone the content!
Thanks for your blog post and discussing your own results together with us. Very well completed! I think a lot of people find it hard to understand paying attention to many controversial things associated with this topic, and your own results speak for themselves. I think several additional takeaways are the significance of following each of the ideas you presented above and being willing to be ultra unique about which one could really work for you best. Nice job.
A really fascinating read, I may well not agree totally, but you do make some quite legitimate factors.
zovirax ca – buy hydroquinone online cheap dydrogesterone drug
What’s The Job Market For Treadmills UK Reviews Professionals Like?
treadmills Uk reviews
Why Automobile Locksmiths Near Me Is Everywhere This
Year Mobile Automotive Locksmith Near Me
Hi there! Do you know if they make any plugins to assist
with Search Engine Optimization? I’m trying to get
my blog to rank for some targeted keywords but I’m
not seeing very good gains. If you know of any please share.
Kudos! You can read similar article here: All escape rooms
You’ll Never Guess This Truck Accident Lawsuits’s Secrets lawsuits
The 10 Scariest Things About Citroen C4 Key Fob Replacement
Replacement Citroen key Fob
http://tuyensinhajc.edu.vn
Thanks for the auspicious writeup. It actually used to be a leisure account it. Glance complicated to more delivered agreeable from you! However, how can we be in contact?
Getting Visitors To Your Blog Made Quick And Easy blog
Hello, this is a seriouslyexcellent submit. In concept Id liketo jot down like this too – taking time and real work to make a brilliant article.!. but what can I say.!. I procrastinate alot and never seem to have anything done. Thank You
It’s perfect time to make a few plans for the future and it is time to be happy. I have learn this put up and if I may I wish to suggest you few attention-grabbing issues or advice. Maybe you could write next articles referring to this article. I want to read more issues about it!
Hello! I would wish to supply a large thumbs up for your excellent info you could have here about this post. I’ll be coming back to your blog site for further soon.
Heya i am for the first time here. I found this board and I find It really useful & it helped me out much. I hope to give something back and aid others like you helped me.
The the next time Someone said a weblog, Hopefully that this doesnt disappoint me about this place. Get real, Yes, it was my replacement for read, but When i thought youd have something intriguing to say. All I hear is actually a couple of whining about something that you could fix if you werent too busy in search of attention.
7 Small Changes That Will Make A Huge Difference In Your Tiered Linkbuilding
link building tier (Tam)
Great post, I concur completely and appreciate the time you took to write it, nice!
The Most Popular Birth Defect Claim The Gurus Have Been Doing 3 Things birth Defect law firms
Awesome post , I’m going to spend more time learning about this topic
“Worked hard all year to gain home-court advantage.. Gotta take advantage of it.” – LeBron James|Inluv_w_a_hero|
Test: How Much Do You Know About Wash Machine And Dryer Combo?
washer dryer combos (Frances)
I genuinely enjoy looking at on this website , it has wonderful content .