zoukankan      html  css  js  c++  java
  • 【Java】XML解析之DOM4J

    DOM4J介绍

      dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP,使用需要引用dom4j.jar包

    XML生成及解析

      代码如下:

      

     1 package com.test.dom4j;
     2 
     3 import java.io.File;
     4 import java.io.FileWriter;
     5 import java.io.IOException;
     6 import java.io.Writer;
     7 import java.util.Iterator;
     8 
     9 import org.dom4j.Document;
    10 import org.dom4j.DocumentException;
    11 import org.dom4j.DocumentHelper;
    12 import org.dom4j.Element;
    13 import org.dom4j.io.OutputFormat;
    14 import org.dom4j.io.SAXReader;
    15 import org.dom4j.io.XMLWriter;
    16 
    17 public class TestDom4j {
    18 
    19     public static void main(String[] args) {
    20         createXml();
    21         parserXml();
    22     }
    23 
    24     // Dom4j创建Xml文档
    25     public static void createXml() {  
    26         // 创建一个文档对象  
    27         Document document = DocumentHelper.createDocument(); 
    28         // 在根节点添加元素  
    29         Element conpany = document.addElement("conpany"); 
    30         // 在conpany下添加子节点  
    31         Element department = conpany.addElement("department"); 
    32         // 在department下添加子节点  
    33         Element employee = department.addElement("employee"); 
    34         // 给employee节点添加内容  
    35         employee.setText("123"); 
    36         // 给employee节点添加内容  
    37         employee.addAttribute("name", "employee1");
    38         try {  
    39             Writer fileWriter = new FileWriter("src/test-dom4j-create.xml"); 
    40             
    41             //输出格式
    42             OutputFormat xmlFormat = new OutputFormat();
    43             //设置编码
    44             xmlFormat.setEncoding("UTF-8");
    45             // 设置换行 
    46             xmlFormat.setNewlines(true);
    47             //自动缩进
    48             xmlFormat.setIndent(true);
    49             // 使用4个空格进行缩进, 可以兼容文本编辑器 
    50             xmlFormat.setIndent("    "); 
    51             
    52             //輸出
    53             XMLWriter xmlWriter = new XMLWriter(fileWriter,xmlFormat);  
    54             xmlWriter.write(document);  
    55             xmlWriter.close();  
    56         } catch (IOException e) {  
    57             System.out.println(e.getMessage());
    58         }
    59 
    60     }
    61     
    62     
    63     // Dom4j解释Xml文档  
    64    public static void parserXml() {  
    65        //文件
    66        File inputXml = new File("src/test-dom4j-create.xml");  
    67        //解析器
    68        SAXReader saxReader = new SAXReader();  
    69        try {  
    70            //得到文档
    71            Document document = saxReader.read(inputXml);  
    72            //根目录
    73            Element conpany = document.getRootElement();  
    74            for (Iterator i = conpany.elementIterator(); i.hasNext();) {  
    75                Element department = (Element) i.next();  
    76                for (Iterator j = department.elementIterator(); j.hasNext();) { // 遍例节点  
    77                    Element employee = (Element) j.next();  
    78                    //获取元素的文本以及属性
    79                    System.out.println(employee.getName() + "	" + employee.getText() + "	" + employee.attributeValue("name"));  
    80                }  
    81  
    82            }  
    83        } catch (DocumentException e) {  
    84            System.out.println(e.getMessage());  
    85        }  
    86    }   
    87 }

    生成的文本:

      

    控制台输出:

      

  • 相关阅读:
    网页快捷键
    2016年5月3日15:55:23笔记
    【编程的乐趣-用python解算法谜题系列】谜题一 保持一致
    重温离散系列②之良序原理
    重温离散系列①之什么是证明
    浅谈栈和队列
    [leetcode]16-最接近的三数之和
    [leetcode] 4-寻找两个有序数组的中位数
    英语句子的基本结构【转】
    [leetcode] 11-盛最多水的容器
  • 原文地址:https://www.cnblogs.com/h--d/p/5973583.html
Copyright © 2011-2022 走看看