1. 程式人生 > >使用Java解析XML

使用Java解析XML

word tel class roo 內容 select 屬性 葉子節點 介紹

一.解析的對象

<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user id="1">
        <username>小丁</username>
        <password>123</password>
    </user>
    <user id="2">
        <username>小彭</username>
        <password>123</password
> </user> </users>

二.解析的方法介紹

  1.DOM(docuement object model)解析

   技術分享圖片

    把所有的XML內容讀到內存中,形成樹狀結構。這個樹狀結構是一個對象,名字叫docuement  

      DOM解析中的一些術語

       Doucment:整個對象(整顆數)

       Element:元素,就是標簽,上面的users,user,username,password四個標簽

       Attribute:屬性,user標簽中的id屬性

       Text:文本,標簽中的內容,上圖最下面的葉子節點。

      Node:上面四個都可以叫Node   

      

  2.SAX(simple API for XML)

     SAX一條條讀到內存並解析

三.代碼實現

  使用dom4j(一個API,封裝了我們需要的方法)   

  下載地址 https://dom4j.github.io/

  

  第一種實現 導入dom4j的jar:

package xmlDemo;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.junit.Test; public class UserTest { @Test public void DOMTest() { try { SAXReader reader = new SAXReader(); // 讀取要解析的xml文件 Document document = reader.read(new File("src/User.xml")); // 獲得根元素 Element rootElement = document.getRootElement(); // 獲取根元素下的所有子元素 List<Element> elements = rootElement.elements(); for (Element element : elements) { String username = element.element("username").getText(); String password = element.element("password").getText(); System.out.println("username=" + username + " password=" + password); } } catch (DocumentException e) { e.printStackTrace(); } } }

結果:技術分享圖片

第二種XPath: 導入dom4j jar 包外還需導入技術分享圖片

package xmlDemo;

import java.io.File;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class UserTest {
    @Test
    public void XPathTest() {
        try {
            SAXReader reader = new SAXReader();
            // 讀取要解析的xml文件
            Document document = reader.read(new File("src/User.xml"));
            // 獲得根元素
            Element rootElement = document.getRootElement();
            //選擇所有的username元素對象
            List<Element> nodes = rootElement.selectNodes("//username");
            for (Element element : nodes) {
                System.out.println("username="+element.getText());
            }
            

        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}

結果:技術分享圖片

使用Java解析XML