Javaweb-xml编程-XPath

  • XPath是xml路径语言,具有强大的导航功能,可以直接获取xml文档中的节点
  • 当xml文档的层次很多时,使用原始的获取节点的方式将会耗费大量时间和空间,而使用XPath可以迅速定位xml文档中想要的数据

  • 获取所有节点:

    • List list = document.selectNodes(“//foo/bar”);
  • 获取单个节点:
    • Node node = document.selectSingleNode(“//foo/bar/author”);
  • XPath语法:参考W3school

一、使用实例

(1)xml文档:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架>

<书架> 
  <> 
    <书名>数据结构</书名>  
    <作者>严蔚敏</作者>  
    <售价>200元</售价> 
  </>  
  <> 
    <书名>大话设计模式</书名>  
    <作者>周志华</作者>  
    <售价>45.0</售价> 
  </> 
</书架>
(2)获取第一本书的作者信息:

使用XPath快速获取作者姓名

package dom4j;

import java.io.File;

import org.dom4j.Document;
import org.dom4j.io.SAXReader;

public class Demo2 {

    public static void main(String[] args) throws Exception {
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File("src/book.xml"));

        String value = document.selectSingleNode("//作者").getText();
        System.out.println(value);

    }

}
(3)报错信息:

这里写图片描述

(4)改错方式:

报错内容:找不到类,类的名称是org/jaxen/NamespaceContext
表示缺少支持jar包jaxen,网上下载jar包复制到项目中:
结果图

二、案例说明

(1)xml文档
<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user id="1" username="aaa" password="123" email="aa@sina.com" />
    <user id="2" username="bbb" password="123" email="bb@sina.com" />
</users>

备注:CTRL+shift+F自动排版

(2)查找users.xml文档是否有和用户相匹配的用户名和密码
package dom4j;

import java.io.File;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class Demo3 {

    public static void main(String[] args) throws DocumentException {
        String username = "ccc";
        String password = "123";
        //检测xml文档是否有匹配的用户名和密码
        SAXReader reader = new SAXReader();
        Document document =  reader.read(new File("src/users.xml"));
        //断字符串:先打双引号,再打加号,再打名称
        Node node = document.selectSingleNode("//user[@username='"+username+"'and @password='"+password+"']");
        if(node==null){
            System.out.println("用户名或密码错误");
        }
        else{
            System.out.println("登陆成功");
        }

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值