dom4j操作xml的demo(分享)
更新時間:2017年05月29日 08:41:17 投稿:jingxian
下面小編就為大家?guī)硪黄猟om4j操作xml的demo(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
廢話不多說,直接上代碼
package com.cn.shop.util; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * * @author NH * */ public class XmlUtils { public static Document getDocument() { // 1.讀取xml文件獲取document對象 SAXReader reader = new SAXReader(); Document document = null; try { document = reader.read("D:\\itext\\27663.xml"); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 2.通過解析xml的文本 /* * String xmlFilePath = "D:\\itext\\27663.xml"; try { document = * DocumentHelper.parseText(xmlFilePath); } catch (DocumentException e) * { // TODO Auto-generated catch block e.printStackTrace(); } // 3.通過 * Document document = DocumentHelper.createDocument(); Element root = * document.addElement("csdn"); */ return document; } public static void anaXml() throws Exception { // 讀取xml的文本內(nèi)容來創(chuàng)建document對象 SAXReader reader = new SAXReader(); try { Document document = reader.read("D:\\itext\\27663.xml"); Element root = document.getRootElement(); System.out.println(root.getName()); getElement(root); /* elementMethod(root); */ /* * // 獲取一個節(jié)點 Element element = root.element("title"); * * * //獲取element的id屬性節(jié)點對象 Attribute attr = element.attribute("id"); * //刪除屬性 element.remove(attr); * * // 添加新屬性 element.addAttribute("author", "作者"); * * // 添加新的節(jié)點 Element newElement = root.addElement("where"); * // 獲取element中的where元素節(jié)點對象 Element author = * element.element("where"); // 刪除元素節(jié)點 boolean flag = * element.remove(author); // 返回true代碼刪除成功,否則失敗 * System.out.println(flag); // 添加CDATA區(qū)域 * element.addCDATA("紅樓夢,是一部愛情小說."); // 寫入到一個新的文件中 writer(document); */ } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * * 所有節(jié)點內(nèi)容 */ public static void getElement(Element root) { // 獲取當前節(jié)點的所有屬性節(jié)點 List<Attribute> as = root.attributes(); for (Attribute a : as) { System.out.println("當前屬性節(jié)點的名稱:" + a.getName()); /* * System.out.println("當前屬性節(jié)點的內(nèi)容:" + a.getText()); * * System.out.println("當前屬性節(jié)點的值:" + a.getValue()); */ } if (!root.getTextTrim().equals("")) { System.out.println("文本內(nèi)容::::" + root.getText()); } Iterator<Element> el = root.elementIterator(); while (el.hasNext()) { // 獲取某個子節(jié)點對象 Element e = el.next(); // 對子節(jié)點進行遍歷 getElement(e); } } /** * 介紹Element中的element方法和elements方法的使用 * * @param node */ public static void elementMethod(Element node) { // 獲取node節(jié)點中,子節(jié)點的元素名稱為西游記的元素節(jié)點。 Element e = node.element("info"); // 獲取西游記元素節(jié)點中,子節(jié)點為chapter的元素節(jié)點(可以看到只能獲取第一個作者元素節(jié)點) Element author = e.element("classification"); System.out.println(e.getName() + "----" + author.getText()); // 獲取西游記這個元素節(jié)點 中,所有子節(jié)點名稱為classification元素的節(jié)點 。 List<Element> authors = e.elements("classification"); for (Element aut : authors) { System.out.println(aut.getText()); } // 獲取西游記這個元素節(jié)點 所有元素的子節(jié)點。 List<Element> elements = e.elements(); for (Element el : elements) { System.out.println(el.getText()); } } /** * 把document對象寫入新的文件 * * @param document * @throws Exception */ public static void writer(Document document) throws Exception { // 緊湊的格式 // OutputFormat format = OutputFormat.createCompactFormat(); // 排版縮進的格式 OutputFormat format = OutputFormat.createPrettyPrint(); // 設(shè)置編碼 format.setEncoding("UTF-8"); // 創(chuàng)建XMLWriter對象,指定了寫出文件及編碼格式 /* * XMLWriter writer = new XMLWriter(new OutputStreamWriter(new * FileOutputStream(new File("src//a.xml")), "UTF-8"), format); */ File file = new File("c://index//大主宰.xml"); FileOutputStream fos = new FileOutputStream(file); OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); XMLWriter writer = new XMLWriter(osw); // 寫入 writer.write(document); // 立即寫入 writer.flush(); // 關(guān)閉操作 writer.close(); } // 以下的代碼為字符串與xml互轉(zhuǎn)實例 public void test() throws Exception { // 創(chuàng)建saxreader對象 SAXReader reader = new SAXReader(); // 讀取一個文件,把這個文件轉(zhuǎn)換成Document對象 Document document = reader.read(new File("src//c.xml")); // 獲取根元素 Element root = document.getRootElement(); // 把文檔轉(zhuǎn)換字符串 String docXmlText = document.asXML(); System.out.println(docXmlText); System.out.println("---------------------------"); // csdn元素標簽根轉(zhuǎn)換的內(nèi)容 String rootXmlText = root.asXML(); System.out.println(rootXmlText); System.out.println("---------------------------"); // 獲取java元素標簽 內(nèi)的內(nèi)容 Element e = root.element("java"); System.out.println(e.asXML()); } /** * 創(chuàng)建一個document對象 往document對象中添加節(jié)點元素 轉(zhuǎn)存為xml文件 * * @throws Exception */ public void test2() throws Exception { Document document = DocumentHelper.createDocument();// 創(chuàng)建根節(jié)點 Element root = document.addElement("csdn"); Element java = root.addElement("java"); java.setText("java班"); Element ios = root.addElement("ios"); ios.setText("ios班"); writer(document); } /** * 把一個文本字符串轉(zhuǎn)換Document對象 * * @throws Exception */ public void test1() throws Exception { String text = "<csdn><java>Java班</java><net>Net班</net></csdn>"; Document document = DocumentHelper.parseText(text); Element e = document.getRootElement(); System.out.println(e.getName()); writer(document); } /** * 把document對象寫入新的文件 * * @param document * @throws Exception */ public void writer1(Document document) throws Exception { // 緊湊的格式 // OutputFormat format = OutputFormat.createCompactFormat(); // 排版縮進的格式 OutputFormat format = OutputFormat.createPrettyPrint(); // 設(shè)置編碼 format.setEncoding("UTF-8"); // 創(chuàng)建XMLWriter對象,指定了寫出文件及編碼格式 // XMLWriter writer = new XMLWriter(new FileWriter(new // File("src//a.xml")),format); XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(new File("src//c.xml")), "UTF-8"), format); // 寫入 writer.write(document); // 立即寫入 writer.flush(); // 關(guān)閉操作 writer.close(); } public static void main(String[] args) { try { anaXml(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
以上這篇dom4j操作xml的demo(分享)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot使用校驗框架validation校驗的示例
這篇文章主要介紹了springboot使用校驗框架validation校驗的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02使用springboot logback動態(tài)獲取application的配置項
這篇文章主要介紹了使用springboot logback動態(tài)獲取application的配置項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08springboot如何獲取applicationContext?servletContext
這篇文章主要介紹了springboot如何獲取applicationContext?servletContext問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01Java的Cglib動態(tài)代理實現(xiàn)方式詳解
這篇文章主要介紹了Java的Cglib動態(tài)代理實現(xiàn)方式詳解,CGLIB是強大的、高性能的代碼生成庫,被廣泛應(yīng)用于AOP框架,它底層使用ASM來操作字節(jié)碼生成新的類,為對象引入間接級別,以控制對象的訪問,需要的朋友可以參考下2023-11-11