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

 

posted on 2017-07-24 16:01  啷个哩个啷  阅读(5335)  评论(0编辑  收藏  举报