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>
The 10 Scariest Things About Double Glazing Near Me double glazing company Near me
Guide To Double Glazed Window Near Me: The Intermediate Guide To Double Glazed Window Near Me double glazed window near me
10 Meetups About Integrated Side By Side Fridge Freezers You Should Attend http://www.36035372.xyz
Is Technology Making Double Glazed Near Me Better Or Worse?
Replace Double glazed units
17 Reasons Why You Shouldn’t Be Ignoring Best
Coffee Machines Lucille
https://ddnews.co.kr/category/it/page/2/
Your passion for this subject is contagious.프라그마틱 이미지
See What Double Glazed Window Repairs Near Me Tricks The Celebs Are Using window
repairs near me (Wanda)
Four Cardinal Rules For Playing Firm Card Game 학자금 대출; northfork.co,
What Do You Do To Know If You’re Ready To Go After Double Glazed Window Luton glass windows
repair (Cherie)
13 On-Page Factors For Seo 워드프레스 백링크
This Is How Double Glazed Units Near Me Will Look Like In 10 Years’ Time
replacement double glazed units near me; http://comphy.kr/,
Seo Tips: Search Engine Optimization And Increasing Your Blog’s Ranking 백링크 대행 (heroniran81.bloggersdelight.dk)
Grace Periods Do Operate In Property Finance Loan Modification 200만원 대출
Paying Points On A Home Loan Loan: When Was Is An Idea? 직장인 대출 (americasmostexcitingbank.com)
20 Things That Only The Most Devoted Upvc Window
Repairs Fans Are Aware Of upvc windows Repair near me
Link Building – Towards You To Higher Search Engine Ranking 구글SEO
10 Life Lessons We Can Learn From Personal Injury Lawyers personal injury attorney
The No. 1 Question Everyone Working In Birth Injury Litigation Needs
To Know How To Answer Birth Injury law firm
https://nicesongtoyou.com/tax/real-estate-tax/
What Is The Reason? Asbestos And Mesothelioma
Claims Is Fast Becoming The Most Popular Trend In 2023? http://www.9363280.xyz
Аренда телесуфлеров в Москве, Аренда и обслуживание телесуфлеров в Москвеhttps://телесуфлер.рф/
Guide To Employers Liability Act Fela: The Intermediate Guide On Employers Liability
Act Fela liability act Fela
10 Strategies To Build Your Veterans Disability Lawsuit Empire veterans disability law firm
What Is Programing Car Keys And How To Use It http://www.5611432.xyz
Are You Getting Tired Of Childrens Bunk Bed? 10
Inspirational Sources To Revive Your Passion eddafay.top
10 Tell-Tale Signs You Need To Get A New Upvc Window Repairs upvc window
repairs near me [Ewan]
ondansetron oral – cheap procyclidine without prescription requip 2mg drug
What’s The Current Job Market For Double Glazing Repairs Near Me Professionals Like?
Double Glazing Repairs Near Me
See What Double Glazing Glass Replacement Near Me Tricks The Celebs
Are Utilizing double Glazing glass (https://canadianairsoft.wiki)