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