使用Dom4解析xml


XML是一種通用的數據交換格式,它的平台無關性、語言無關性、系統無關性、給數據集成與交互帶來了極大的方便。

XML在不同的語言環境中解析方式都是一樣的,只不過實現的語法不同而已。

  XML的解析方式分為四種:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。

      其中前兩種屬於基礎方法,是官方提供的平台無關的解析方式;

      后兩種屬於擴展方法,它們是在基礎的方法上擴展出來的,只適用於java平台。

---使用DOM4J解析xml

package Dom4j;


import XmlDocument.XmlDocument;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import java.io.File;
import java.io.FileWriter;

import java.io.Writer;
import java.util.Iterator;

/**
 * Created by zhangyu on 2017/7/24.
 */
public class Dom4jTest{

    /**
     * 建立XML文檔
     * @param fileName 文件全路徑名稱
     */
    public void createXml(String fileName) throws Exception {
        Document document = DocumentHelper.createDocument();  //創建document對象
        Element employee = document.addElement("employee");       //添加一個節點
        Element name = employee.addElement("name");              //為節點添加一個屬性
        name.setText("張雨");
        Element sex = employee.addElement("sex");                 //為 節點添加一個性別屬性
        sex.setText("男");
        Element age =  employee.addElement("age");                //為節點添加年齡屬性
        age.setText("19");
        Writer fileWriter = new FileWriter(fileName);
        XMLWriter   xmlWriter =new XMLWriter(fileWriter);
        xmlWriter.write(document);
        xmlWriter.close();                                         //關閉流

    }
    /**
     * 解析XML文檔
     * @param fileName 文件全路徑名稱
     */
    public void parserXml(String fileName) {
        File inputXml = new File(fileName);
        SAXReader saxReader = new SAXReader();
        try {
            Document document=saxReader.read(inputXml);       //SAX生成和解析XML文檔
            Element employees = document.getRootElement();    //獲得根節點
            for(Iterator i = employees.elementIterator(); i.hasNext();){
                Element employee = (Element) i.next();
                for(Iterator j = employee.elementIterator(); j.hasNext();){
                    Element node=(Element) j.next();
                    System.out.println(node.getName()+":"+node.getText());
                }
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }

    }
}

 

   其原理還是底層 的Dom和SAX解析

測試類

執行方法createXml()

<?xml version="1.0" encoding="UTF-8"?>
<employee><name>張雨</name><sex></sex><age>19</age></employee>

 

執行方法parseXml()

name:張雨
sex:男
age:19

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM