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