java解析XML

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出現了...

相關文章
相關標籤/搜索