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