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>
Why Do So Many People Want To Know About Window Replacement Companies?
Replacement Windows Glass
20 Reasons To Believe Single Bunk Bed With Desk Will Never Be
Forgotten bunk beds that turn into single beds
You’ll Never Guess This 18 Wheeler Accident Law Firm’s Tricks
18 wheeler accident Law firm
You’ll Never Be Able To Figure Out This Veterans Disability Lawyers’s Secrets
veterans disability lawyers
15 Shocking Facts About Malpractice Attorneys malpractice lawsuit (Pablo)
Your Bank Is Broke And Could Use A Bailout,
Exactly What You Ought To Do 청년 대출
수원출장샵
See What Best Online Shopping Uk Clothes Tricks The Celebs Are Utilizing best online shopping uk clothes (Lidia)
Here’s A Little Known Fact Concerning Hyundai Ix35 Key Replacement
lost hyundai key fob
A Look At The Future What’s In The Pipeline? Motor Vehicle Lawyer
Industry Look Like In 10 Years? Lawyers
The Most Underrated Companies To Watch In Online Shopping Sites For Clothes Industry us online shopping sites for clothes (inbest.clickcorp.kr)
Orchard Credit Cards – Must I Sign Down? 소액 대출 (https://posteezy.com/)
What’s The Job Market For Uk Online Phone Shopping Sites Professionals Like?
Uk Online Phone Shopping Sites
Important An Individual Must Remember Before Deciding On Online Poker Play 에볼루션 홀덤
I’m amazed, I must say. Rarely do I come across a blog that’s both educative and amusing, and let me tell you, you’ve hit the nail on the head. The issue is an issue that too few people are speaking intelligently about. I am very happy that I found this in my search for something relating to this.
Guide To Online Shopping Sites In United Kingdom: The Intermediate Guide Towards Online Shopping Sites In United Kingdom online shopping sites in united kingdom (https://strongprisonwivesandfamilies.com/)
The 10 Scariest Things About Patio Door Repair Near Me patio door repair near me
Five Killer Quora Answers On Cheap Online Grocery Shopping Uk
cheap online grocery shopping uk
You’ll Be Unable To Guess Fela Federal Employers Liability Act’s Benefits fela federal employers Liability Act
Can I simply say what a comfort to find a person that really understands what they’re talking about on the web. You definitely realize how to bring a problem to light and make it important. More people ought to look at this and understand this side of the story. I can’t believe you’re not more popular since you definitely have the gift.
5 Killer Quora Answers On Double Glazed Near Me double glazed near Me
The 10 Most Scariest Things About Bipolar Psychiatrist Near Me
Bipolar Psychiatrist near me
Crawley Window Repair Isn’t As Difficult As You Think Upvc Windows near Me
Guide To Birth Defect Attorney: The Intermediate Guide To Birth Defect Attorney Birth Defect
See What Single Push Chair Tricks The Celebs Are Utilizing Single Push Chair
8 Tips To Boost Your Who Repairs Sliding Patio Doors
Game How To Repair Tilt And Slide Patio Door
Don’t Stop! 15 Things About Online Famous Shopping Sites We’re Tired Of Hearing
which supermarket is best For online shopping
Five Killer Quora Answers To Uk Online Shoe Shopping Websites uk Online shoe shopping websites
11 Ways To Completely Revamp Your High Wycombe Door Panels internal fire doors High wycombe
10 Of The Top Mobile Apps To Use For Stove Wood 913875.xyz