java-xpath學習

/**

  • 使用xpath技術取得xml文件中任意級別下的內容 基於dom4j的xpath技術
  • 1)能夠在xml文件中,快速定位需要元素,無需從根元素一個一個的導航到需要的子元素
  • Document.selectNodes():取得所有符合xpath格式的元素
  • Document.selectSingleNode():取得所有符合xpath格式的元素的第一個元素
  • Node類型是Element/Text/Attribute/Document/...類型的父接口
  • */

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

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

/**
 * 使用xpath技術取得xml文件中任意級別下的內容 基於dom4j的xpath技術
 * 1)能夠在xml文件中,快速定位需要元素,無需從根元素一個一個的導航到需要的子元素
 * Document.selectNodes():取得所有符合xpath格式的元素
 * Document.selectSingleNode():取得所有符合xpath格式的元素的第一個元素
 * Node類型是Element/Text/Attribute/Document/...類型的父接口
 * */

public class Xpath {

    @Test
    public void xpathtest() throws Exception {
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File("src/day2/domx/car.xml"));

        String xpath = "//單價";
        List<Element> elementList = document.selectNodes(xpath);
        for (Element e : elementList) {
            System.out.println(e.getText());
            System.out.println("=================");
        }

    }

    @Test
    public void xpathtest1() throws Exception {
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File("src/day2/domx/car.xml"));

        String xpath = "//單價";
        List<Element> elementList = document.selectNodes(xpath);
        System.out.println("第二輛汽車的單價是:" + elementList.get(1).getText());

    }

    @Test
    public void xpathtest2() throws Exception {
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File("src/day2/domx/car.xml"));
        String xpath = "//單價";
        Element element = (Element) document.selectSingleNode(xpath);
        System.out.println("第一輛汽車的單價是:" + element.getText());
    }

    @Test
    public void login() throws Exception {
        // 讀取用戶在鍵盤的輸入信息

        Scanner scanner = new Scanner(System.in);
        System.out.println("用戶名:");
        String username = scanner.nextLine();
        System.out.print("密碼:");
        String password = scanner.nextLine();

        // System.out.println(username+":"+password);
        //解析XML文件,並查詢指定的元素

        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(new File("src/day2/domx/users.xml"));
        String xpath = "//user[@username='"+username+"' and @password='"+password+"']" ;

        Element element =   (Element) document.selectSingleNode(xpath);

        if(element != null)
        {
            System.out.println("登陸成功");
        }else
        {
            System.out.println("登陸失敗");
        }

    }

}

user.xml

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <user id = "id001" username ="liwen" password="123456"></user>
   <user id = "id002" username ="python" password="23456"></user>
</root>

結果:
用戶名:
liwen
密碼:123456
登陸成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章