XMl (eXtensible Markup Language)可擴展標記語言 屬於數據存儲語言
XML的特色:
能夠在任何應用程序中讀取數據
極其簡單
簡化數據共享和數據傳輸
XML和HTML的區別:HTML 旨在顯示信息,而 XML 旨在傳輸信息。XML要求全部的標記都要成雙成對出現,並區分大小寫,而HTML標記不區分大小寫,java
(DOM解析方式)
mysql
須要在工程中導入dom4j.jar包
dom4j是一個Java的XML API,是jdom的升級品,用來讀寫XML文件的。dom4j是一個十分優秀的JavaXML API,具備性能優異、功能強大和極其易使用的特色,
連接:https://pan.baidu.com/s/1c2pTmd6 密碼:u6oysql
org.dom4j.io提供了兩個類:SAXReader和DOMReader,前者從一個現有的w3c DOM樹構建dom4j樹,而SAXReader則使用SAX解析器,從不一樣的輸入源構建dom4j樹。數據庫
SAXReader方式:
解析步驟:dom
1):建立SAXReader對象(須要導包org.dom4j.io.SAXReader) SAXReader reader = new SAXReader(); 2):讀取整個XML文件結構(須要包:org.dom4j.Element;) Document doc = reader.read(File file); read()方法能夠給一個文件路徑 也能夠給一個File的對象 3)獲取XML文件的根節點 (須要包:org.dom4j.Element) Element root = doc.getRootElement(); 4)獲取節點下的元素 List<Element> childList =root.elements(); 獲取當前元素指定名稱的子元素 root.element(String name) 獲取當前元素的名稱 root.getName() 獲取當前元素的內容 root.getText() root.getTextTrim() 獲取當前元素下指定名稱的子元素內容 root.elementText(String name) 獲取當前元素的值 root.getStringValue();
所有代碼以下:sqlserver
import java.io.File; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class SAXReaderDemo { public static void main(String[] args) { try { // 建立SAXReader對象 SAXReader reader = new SAXReader(); // 讀取XML文件結構 Document doc = reader.read(new File("config/server.xml")); // 獲取XML文件根節點 Element root = doc.getRootElement(); // 獲取根節點一下的子元素 List<Element> list = root.elements(); for (Element item : list) { if ("MySql".equals(item.getName())) { System.out.println("MySQL數據庫"); // 獲取MySql下的子元素 List<Element> list1 = item.elements(); // 迭代子節點的元素值 for (Element element : list1) { System.out.println("當前元素是:" + element.getName() + "值是:" + element.getStringValue()); } } else if ("SQLServer".equals(item.getName())) { System.out.println("SQLServer數據庫"); // 獲取SQLServer下的子元素 List<Element> list1 = item.elements(); // 迭代子節點的元素值 for (Element element : list1) { System.out.println("當前元素是:" + element.getName() + "值是:" + element.getStringValue()); } } } } catch (Exception e) { e.printStackTrace(); } } }
個人項目結構以下:性能
xml文件以下:url
<?xml version = "1.0" encoding="UTF-8"?> <server> <MySql> <driver>com.mysql.jdbc.Driver</driver> <url>jdbc:mysql://localhost:3306/database?useSSL=true</url> <user>root</user> <pwd>1234</pwd> </MySql> <SQLServer> <driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver> <url>jdbc:sqlserver://localhost:1433;DatabaseName=database</url> <user>sa</user> <pwd>1234</pwd> </SQLServer> </server>
用java生成xml文件spa
1)建立Document對象 經過DocumentHelper的createdocument()方法來獲取document對象(須要導包:org.dom4j.Document;org.dom4j.DocumentHelper) Document doc = DocumentHelper.createDocument(); 2)建立根節點 注意 XML文件的根節點只能有一個(須要導包:org.dom4j.Element) Element root = doc.addElement(String name); 3)添加子節點 返回的是當前節點對象 Element child = root.addElement(String name); 4)後面能夠繼續添加節點 也能夠添加子節點下的子節點 child.addElement(String name); 添加節點 child.addText(String name); 添加節點中的內容 完善DOM結構後 就能夠把Document對象寫入xml文件中 1)建立XMLWriter 流對象 XMLWriter writer=new XMLWriter(); 2)爲XMLWriter設定低級輸出流 FileOutputStream fos=new FileOutputStream("config/new.xml"); writer.setOutputStream(fos); 3)將document對象寫入xml文件中 writer.write(doc); 4)最後關閉XMLWriter流對象 writer.close();
具體代碼以下:code
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.XMLWriter; public class createXML { public static void main(String[] args) { //建立document對象 Document doc = DocumentHelper.createDocument(); //建立根節點 Element root = doc.addElement("server"); //在根節點上建立兩個子節點 Element child1 = root.addElement("MySql"); Element child2 = root.addElement("SQLServer"); //建立第一個子節點下的節點 Element child1_driver = child1.addElement("driver"); child1_driver.addText("com.mysql.jdbc.Driver"); Element child1_url = child1.addElement("url"); child1_url.addText("jdbc:mysql://localhost:3306/database?useSSL=true"); Element child1_user = child1.addElement("user"); child1_user.addText("root"); Element child1_pwd = child1.addElement("pwd"); child1_pwd.addText("1234"); //建立第二個子節點下的節點 Element child2_driver = child2.addElement("driver"); child2_driver.addText("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Element child2_url = child2.addElement("url"); child2_url.addText("jdbc:sqlserver://localhost:1433;DatabaseName=database"); Element child2_user = child2.addElement("user"); child2_user.addText("sa"); Element child2_pwd = child2.addElement("pwd"); child2_pwd.addText("1234"); try { //建立XMLWriter 流對象 XMLWriter writer=new XMLWriter(); //注:XMLWriter writer=new XMLWriter(OutputStream os);,可省略第二步 //爲XMLWriter設定低級輸出流 FileOutputStream fos=new FileOutputStream("config/new.xml"); writer.setOutputStream(fos); //將document對象寫入xml文件中 writer.write(doc); //最後關閉XMLWriter流對象 writer.close(); } catch (Exception e) { e.printStackTrace(); } } }
運行代碼後刷新config 發現new.xml出現了...