zoukankan      html  css  js  c++  java
  • java基础75 xpth技术(网页知识)

    1、xpth技术

    1.1、xpath的作用

        主要用于快速获取所需的节点对象。

        list<Node> selectNodes("xpath");  查询多个节点对象
                         selectSingleNode("xpath");  查询一个节点对象

    1.2、在dom4j中如何使用xpath技术

        1.导入xpath技术jar包:jaxen-1.1-beta-6.jar
        2.使用xpath的方法

    2、xpath语法          XPath在线文档

             绝对路径    表示从xml的跟位置开始或者子元素(一个层次结构)
        //     相对路径    表示不分任何层次结构的选择元素.
            通配符    表示匹配所有元素
        [ ]    条件    表示选择什么条件下的元素
           属性    表示属性节点
        and  关系    表示条件与关系(等价于&&)
        text  文本    表示选择文本内容

    3、实例

    例1:

     1 package com.shore.xpath;
     2 
     3 import java.io.File;
     4 import java.io.FileOutputStream;
     5 
     6 import org.dom4j.Document;
     7 import org.dom4j.DocumentException;
     8 import org.dom4j.Element;
     9 import org.dom4j.io.OutputFormat;
    10 import org.dom4j.io.SAXReader;
    11 import org.dom4j.io.XMLWriter;
    12 
    13 public class Demo1 {
    14     public static void main(String[] args) throws Exception {
    15         /*
    16          * 需求:删除id值为001的学生标签
    17          * */
    18         Document doc=new SAXReader().read(new File("./src/contact.xml"));
    19         //查询id为2的学生标签
    20         //使用xpath技术
    21         Element stuEle=(Element)doc.selectSingleNode("//contact[@id='001']");
    22         stuEle.detach();//删除
    23         
    24         //创建写出通道对象
    25         FileOutputStream out=new FileOutputStream("F:/contact.xml");
    26         OutputFormat format=OutputFormat.createPrettyPrint();//设置写xml出文件的格式
    27         format.setEncoding("utf-8");
    28         //写出xml文件到F盘下
    29         XMLWriter write=new XMLWriter(out,format);
    30         //写出
    31         write.write(doc);
    32         write.close();
    33     }
    34 }

     例2:

     1 package com.shore.xpath;
     2 
     3 import java.io.File;
     4 import java.util.List;
     5 
     6 import org.dom4j.Document;
     7 import org.dom4j.Node;
     8 import org.dom4j.io.SAXReader;
     9 
    10 /*
    11  * 学习xPath语法
    12  * */
    13 public class Demo2 {
    14     public static void main(String[] args) throws Exception {
    15         Document doc=new SAXReader().read(new File("./src/contact.xml"));
    16         String xpath="";        
    17         /*
    18          * 1./ 绝对路径,从xml的跟位置开始或子元素开始(一个层次)
    19          * */
    20         xpath="/contactList";
    21         xpath="/contactList/contact";
    22         /*
    23          * 2.// 相对定位,表示部分任何层次结构的选择元素
    24          * */
    25         xpath="//contact[1]/name";
    26         xpath="//name";
    27         /*
    28          * 3.* 通配符,表示匹配所有元素
    29          * */
    30         xpath="/contactList/*";
    31         xpath="/contactList//*";
    32         /*
    33          * 4.[] 条件,表示选择什么条件下的元素
    34          * */
    35         //带有id属性的contact标签
    36         xpath="//contact[@id]";
    37         xpath="//contact[2]";
    38         xpath="//contact[last()]";        
    39         /*
    40          * @ 属性; and 表示条件与关系(等价于&&)  
    41          * */
    42         xpath="//@id";
    43         xpath="//contact[not(@id)]";
    44         xpath="//contact[@id='001' and @name='张三']";
    45         /*
    46          * text() 表示选择文本内容
    47          * */
    48         //选择name标签下的文本内容
    49         xpath="//name//text()";
    50         List<Node> list=doc.selectNodes(xpath);
    51         for (Node node : list) {
    52             System.out.println(node.getText());
    53         }    
    54     }
    55 }

    contact.xml文档(注:上面的两个实例都用到此文件)

     1 <contactList>
     2     <contact id="001" name="zhangsan">
     3         <name>张三</name>
     4         <age>18</age>
     5         <phone>15779593710</phone>
     6         <email>872855221@qq.com</email>
     7         <qq>872855221</qq>
     8         <abc>
     9             <a><b></b></a>
    10         </abc>
    11     </contact>
    12     <contact name="zhangsan">
    13         <name>张三</name>
    14         <age>18</age>
    15         <phone>15779593710</phone>
    16         <email>872855221@qq.com</email>
    17         <qq>872855221</qq>
    18     </contact>
    19     <contact id="002">
    20         <name>李四</name>
    21         <age>20</age>
    22         <phone>1314580</phone>
    23         <email>12580@qq.com</email>
    24         <qq>832144529</qq>
    25     </contact>
    26 </contactList>

    附录

     1 package com.shore.login;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.File;
     5 import java.io.IOException;
     6 import java.io.InputStreamReader;
     7 
     8 import org.dom4j.Document;
     9 import org.dom4j.Element;
    10 import org.dom4j.io.SAXReader;
    11 
    12 //模拟登陆
    13 public class Demo1 {
    14     public static void main(String[] args) throws Exception {
    15         //1获取用户输入的用户名密码
    16         BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    17         System.out.println("请输入用户名:");
    18         String name=br.readLine();
    19         
    20         System.out.println("请输入密码:");
    21         String password=br.readLine();
    22         
    23         //2.到数据库中查询是否有对应用户
    24         //对应的用户:在user.xml文件中找到一个
    25         Document doc=new SAXReader().read(new File("./src/user.xml"));
    26         Element userElement=(Element)doc.selectSingleNode("//user[@name='"+name+"' and @password='"+password+"']");
    27         
    28         if(userElement !=null){
    29             //登录成功
    30             System.out.println("登录成功!");
    31             
    32         }else{
    33             //登录失败
    34             System.out.println("登录失败,账号或密码错误!");
    35         }
    36     }
    37 }

    user.xml(作用:该文件中 存在的账号和密码,并且一一对应,才能登陆成功)

    1 <?xml version="1.0"  encoding="utf-8"?>
    2 <users>
    3     <user id="001" name="zhangsan" password="123456"></user>
    4     <user id="002" name="wangwu" password="123456"></user>
    5     <user id="003" name="lisi" password="123456"></user>
    6 </users>

    结果图

    原创作者:DSHORE

    作者主页:http://www.cnblogs.com/dshore123/

    原文出自:https://www.cnblogs.com/dshore123/p/9579998.html

    欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

  • 相关阅读:
    慕课网-安卓工程师初养成-3-2 Java中的算术运算符
    慕课网-安卓工程师初养成-3-1 什么是运算符
    慕课网-安卓工程师初养成-2-13 练习题
    慕课网-安卓工程师初养成-2-12 如何在Java中使用注释
    慕课网-安卓工程师初养成-2-11 Java常量
    慕课网-安卓工程师初养成-2-10 Java中的强制类型转换
    试把一个正整数n拆分为若干个
    求解两个给定正整数m、n的最大公约数(m、n)
    统计n!尾部零
    横竖折对称方阵
  • 原文地址:https://www.cnblogs.com/dshore123/p/9579998.html
Copyright © 2011-2022 走看看