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

来源:互联网 发布:淘宝上的壮阳药 编辑:程序博客网 时间:2024/06/05 15:50

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
原创粉丝点击