java--DOM4j-SAXReader对xml文档的解析2

Xpath:

XML PATH Language。
可以实现快速查询。
XPATH包含
    XPath 使用路径表达式在 XML 文档中进行导航 。
    XPath 包含一个标准函数库
准备Xpath的包:jaxen.jar
Xpath通过以下方法使用
    dom.selectNodes – 返回一个 List对像
    dom.selectSingleNode – 返回一个Node对像
XPath示例:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<contacts>
    <user name="Jack" pwd="1234">
        <contact id="707dede609dd4a2990f7cfa4cd5233f9">
            <name>xiaoming</name>
            <sex>male</sex>
            <tel>123456</tel>
            <fild>
                <name>123</name>
                <sex>12</sex>
                <tel>12</tel>
            </fild>
        </contact>

        <contact id="80983802eaa6402d8bac8bb39e71c48f">
            <name>12</name>
            <sex>12</sex>
            <tel>12</tel>
        </contact>
        <contact id="4d30286e8805454bb38fb759a4f6db07">
            <name>rose</name>
            <sex>male</sex>
            <tel>123</tel>
        </contact>
    </user>
    <user name="Rose" pwd="4321">
        <contact id="eedb795b97194c3aaa9bacda7e2948e9">
            <name>xiaoming</name>
            <sex>female</sex>
            <tel>123</tel>
        </contact>
    </user>
</contacts>
import java.util.List;
import java.util.Scanner;

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

public class dom4jParse {

    //基本套路:1,document.selectNodes( xpath路径 );//"//foo/bar"
    //      2, document.selectSingleNode( "//foo/bar/author" );//"//foo/bar/author":xpath路径
    //快速定位
    @Test
    public void SelectDemo() throws Exception{
        SAXReader reader=new SAXReader();
        Document dom=reader.read("./xml/users.xml");
//      List<Element> list=dom.selectNodes("//name");//所有name元素,无论处于哪一层
        //输出:xiaoming,123,12,rose,xiaoming,name
//      List<Element> list=dom.selectNodes("//contact//name");//所有contact下的name结点,无论处于contact下哪一层
        //输出:xiaoming,12312,rose,xiaoming
        List<Element> list=dom.selectNodes("//contact/name");//contact下的直接节点name
        //输出:xiaoming,12,rose,xiaoming
        for(Element e:list){
            System.out.println(e.getText());
        }
    }
    @Test
    public void SelectDemo2() throws Exception{
        SAXReader reader=new SAXReader();
        Scanner sc=new Scanner(System.in);
        System.out.println("name");
        String name=sc.nextLine();
        System.out.println("pwd");
        String pwd=sc.nextLine();
        //不区分大小写1
        name=name.toLowerCase();
        pwd=pwd.toLowerCase();
        String xpath="//user[@name='"+name+"'][@pwd='"+pwd+"']";
        //不区分大小写2
//      String xpath="//user[fn:lower-case(@name)='"+name+"'][fn:lower-case(@pwd)='"+pwd+"']";
        Document dom=reader.read("./xml/users.xml");
        List<Element> list=dom.selectNodes(xpath);//所有name结点,无论处于哪一层
        if(list.size()==0){
            System.out.println("falure");
        }else{
            System.out.println("success");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值