您好,登錄后才能下訂單哦!
本篇文章為大家展示了利用dom4j如何實現操作xml文件中的demo,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
廢話不多說,直接上代碼
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的文本內容來創建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); */ /* * // 獲取一個節點 Element element = root.element("title"); * * * //獲取element的id屬性節點對象 Attribute attr = element.attribute("id"); * //刪除屬性 element.remove(attr); * * // 添加新屬性 element.addAttribute("author", "作者"); * * // 添加新的節點 Element newElement = root.addElement("where"); // * 設定新節點的值 newElement.setText("北京人民出版社,天津人民大學出版社"); * * // 獲取element中的where元素節點對象 Element author = * element.element("where"); // 刪除元素節點 boolean flag = * element.remove(author); // 返回true代碼刪除成功,否則失敗 * System.out.println(flag); // 添加CDATA區域 * element.addCDATA("紅樓夢,是一部愛情小說."); // 寫入到一個新的文件中 writer(document); */ } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * * 所有節點內容 */ public static void getElement(Element root) { // 獲取當前節點的所有屬性節點 List<Attribute> as = root.attributes(); for (Attribute a : as) { System.out.println("當前屬性節點的名稱:" + a.getName()); /* * System.out.println("當前屬性節點的內容:" + a.getText()); * * System.out.println("當前屬性節點的值:" + a.getValue()); */ } if (!root.getTextTrim().equals("")) { System.out.println("文本內容::::" + root.getText()); } Iterator<Element> el = root.elementIterator(); while (el.hasNext()) { // 獲取某個子節點對象 Element e = el.next(); // 對子節點進行遍歷 getElement(e); } } /** * 介紹Element中的element方法和elements方法的使用 * * @param node */ public static void elementMethod(Element node) { // 獲取node節點中,子節點的元素名稱為西游記的元素節點。 Element e = node.element("info"); // 獲取西游記元素節點中,子節點為chapter的元素節點(可以看到只能獲取第一個作者元素節點) Element author = e.element("classification"); System.out.println(e.getName() + "----" + author.getText()); // 獲取西游記這個元素節點 中,所有子節點名稱為classification元素的節點 。 List<Element> authors = e.elements("classification"); for (Element aut : authors) { System.out.println(aut.getText()); } // 獲取西游記這個元素節點 所有元素的子節點。 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(); // 設置編碼 format.setEncoding("UTF-8"); // 創建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(); // 關閉操作 writer.close(); } // 以下的代碼為字符串與xml互轉實例 public void test() throws Exception { // 創建saxreader對象 SAXReader reader = new SAXReader(); // 讀取一個文件,把這個文件轉換成Document對象 Document document = reader.read(new File("src//c.xml")); // 獲取根元素 Element root = document.getRootElement(); // 把文檔轉換字符串 String docXmlText = document.asXML(); System.out.println(docXmlText); System.out.println("---------------------------"); // csdn元素標簽根轉換的內容 String rootXmlText = root.asXML(); System.out.println(rootXmlText); System.out.println("---------------------------"); // 獲取java元素標簽 內的內容 Element e = root.element("java"); System.out.println(e.asXML()); } /** * 創建一個document對象 往document對象中添加節點元素 轉存為xml文件 * * @throws Exception */ public void test2() throws Exception { Document document = DocumentHelper.createDocument();// 創建根節點 Element root = document.addElement("csdn"); Element java = root.addElement("java"); java.setText("java班"); Element ios = root.addElement("ios"); ios.setText("ios班"); writer(document); } /** * 把一個文本字符串轉換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(); // 設置編碼 format.setEncoding("UTF-8"); // 創建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(); // 關閉操作 writer.close(); } public static void main(String[] args) { try { anaXml(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
上述內容就是利用dom4j如何實現操作xml文件中的demo,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。