Java dom4j生成與解析XML案例詳解
一)dom4j介紹
使用方式:在pom.xml中導入dom4j對應的jar
<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency>
優點:dom4j使Java生成和解析XML靈活性變高,並且代碼易於維護
API操作類:
- Document:表示xml文檔信息,是一個樹形結構
- Eelment:表示xml的元素結點,提供一些操作其子元素方法的,如文本、屬性、名稱空間等
- Attribute:表示元素結點中的屬性
二)dom4j生成xml
實現步驟:
第一步:創建一個Document實例
Document doc = DocumentHelper.createDocument();
第二步:先添加一個根結點,然後再添加子結點,構造成一個樹形結構
Element root = doc.addElement(“root”);
第三步:添加xml文件樣式(也可自定義樣式),並輸出xml文件到指定的路徑下
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);
writer.write(doc);
實現源碼:
package com.oysept.xml; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; import org.jdom2.output.Format; /** * dom4j生成xml * @author ouyangjun */ public class CreateDom4j { public static void main(String[] args) { // 執行dom4j生成xml方法 createDom4j(new File("E:\\dom4j.xml")); } public static void createDom4j(File file) { try { // 創建一個Document實例 Document doc = DocumentHelper.createDocument(); // 添加根節點 Element root = doc.addElement("root"); // 在根節點下添加第一個子節點 Element oneChildElement= root.addElement("person").addAttribute("attr", "root noe"); oneChildElement.addElement("people") .addAttribute("attr", "child one") .addText("person one child one"); oneChildElement.addElement("people") .addAttribute("attr", "child two") .addText("person one child two"); // 在根節點下添加第一個子節點 Element twoChildElement= root.addElement("person").addAttribute("attr", "root two"); twoChildElement.addElement("people") .addAttribute("attr", "child one") .addText("person two child one"); twoChildElement.addElement("people") .addAttribute("attr", "child two") .addText("person two child two"); // xml格式化樣式 // OutputFormat format = OutputFormat.createPrettyPrint(); // 默認樣式 // 自定義xml樣式 OutputFormat format = new OutputFormat(); format.setIndentSize(2); // 行縮進 format.setNewlines(true); // 一個結點為一行 format.setTrimText(true); // 去重空格 format.setPadText(true); format.setNewLineAfterDeclaration(false); // 放置xml文件中第二行為空白行 // 輸出xml文件 XMLWriter writer = new XMLWriter(new FileOutputStream(file), format); writer.write(doc); System.out.println("dom4j CreateDom4j success!"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
XML文件效果圖:
三)dom4j解析xml
實現步驟:
第一步:創建一個SAXReader解析器
SAXReader reader = new SAXReader();
第二步:解析xml文件,重新構建成一個Document對象
Document doc = reader.read(file);
第三步:處理Document對象信息,在控制臺打印
實現源碼:
package com.oysept.xml; import java.io.File; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.CDATA; import org.dom4j.Comment; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.Text; import org.dom4j.io.SAXReader; /** * dom4j解析xml * @author ouyangjun */ public class ParseDom4j { public static void main(String[] args) { // 執行dom4j解析xml方法 parseDom4j(new File("E:\\dom4j.xml")); } public static void parseDom4j(File file) { try { // 創建一個SAXReader解析器 SAXReader reader = new SAXReader(); // 讀取xml文件,轉換成Document結點 Document doc = reader.read(file); // 遞歸打印xml文檔信息 StringBuffer buffer = new StringBuffer(); parseElement(doc.getRootElement(), buffer); System.out.println(buffer.toString()); } catch (DocumentException e) { e.printStackTrace(); } } @SuppressWarnings("unchecked") public static void parseElement(Element element, StringBuffer buffer) { buffer.append("<"+element.getName()); List<Attribute> attrs = element.attributes(); if (attrs != null) { for (Attribute attr : attrs) { buffer.append(" "+attr.getName()+"=\""+attr.getValue()+"\""); } } buffer.append(">"); Iterator<Node> iterator = element.nodeIterator(); while (iterator.hasNext()) { Node node = iterator.next(); if (node instanceof Element) { Element eleNode = (Element) node; parseElement(eleNode, buffer); } if (node instanceof Text) { Text text = (Text) node; buffer.append(text.getText()); } if (node instanceof CDATA) { CDATA dataNode = (CDATA) node; buffer.append(dataNode.getText()); } if (node instanceof Comment) { Comment comNode = (Comment) node; buffer.append(comNode.getText()); } } buffer.append("</"+element.getName()+">"); } }
XML文件解析效果圖打印:
到此這篇關於Java dom4j生成與解析XML案例詳解的文章就介紹到這瞭,更多相關Java dom4j生成與解析XML內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java中使用DOM4J生成xml文件並解析xml文件的操作
- java解析XML詳解
- SpringBoot框架如何管理Xml和CSV
- Java全面解析string類型的xml字符串
- java 如何使用org.w3c.dom操作XML文件