【工程截图】

【person.xml】

<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="88888" phone="15888888888" sex="男">
<name>张三</name>
<name>张三2</name>
<age>18</age>
<school>清华</school>
</student>
<student id="99999" phone="15999999999" sex="女">
<name>李四</name>
<name>李四2</name>
<age>28</age>
<school>北大</school>
</student>
<student phone="15666666666" sex="男">啦啦啦</student>
<AAAA>
<student id="AAA">AAA哈哈哈</student> <!-- student干扰项 -->
<aa1>aa111</aa1>
<aa2>aa222</aa2>
</AAAA>
<BBBB>
<student id="BBB" sex="女">BBB哈哈哈</student> <!-- student干扰项 -->
</BBBB>
</students>

【共用的打印节点路径和内容的方法】方便查看

public static void printNodes(String xpath,Document doc){
List<Node> list=doc.selectNodes(xpath);
for(Node node:list){
System.out.println("【路径】"+node.getPath()+" 【内容】"+node.getText());
}
}

【1.绝对路径 / 】

public static void main(String[] args) throws DocumentException {
Document doc=new SAXReader().read(new File("./src/person.xml")); String xpath="";

//后面的代码分别代替下面的"===="内的内容
=================================================================
/**
* 1. "/" 绝对路径 表示从xml的根位置开始
*/
xpath="/students"; //打印结果1
xpath="/students/student/name"; //打印结果2
   ==================================================================
     printNodes(xpath,doc); //调用上面打印路径和内容的方法 (分别注释)
}

【打印结果1】

【打印结果2】

【2. 相对路径  // 】

        /**
* 2. "//" 相对路径 表是不分任何层次结构的选择元素
*/
xpath="//student/age"; //打印结果1
xpath="//name"; //打印结果2

【打印结果1】

【打印结果2】

【3.通配符 *】

        /**
* 3. "*" 通配符 表示匹配所有元素
*/
xpath="/students/*"; //打印结果1
xpath="/students/student/*"; //打印结果2

【打印结果1】

【打印结果2】

【4.条件 [ ] 】

        /**
* 4. "[]" 条件 表好似选择什么条件下的元素
*/
//带有id属性的标签
xpath="//student[@id]"; //打印结果1
//第3个student标签
xpath="//student[3]"; //打印结果2
//选择最后一个student标签
xpath="//student[last()]"; //打印结果3

【打印结果1】

【打印结果2】

【打印结果3】

【5.  属性 "@"】

        /**
* 5. "@" 属性 表好似选择属性节点
*/
xpath="//@id"; //打印结果1
xpath="//student[not(@id)]"; //打印结果2
xpath="//student[@id='BBB' and @sex='女']"; //打印结果3

【打印结果1】

【打印结果2】

【打印结果3】

【6. 文本  text()】

        /**
* 6. text() 表示选择文本内容
*/
xpath="//name/text()"; //打印结果1
//选择name为李四的name标签
xpath = "//student/name[text()='李四']";//打印结果2

【打印结果1】

【打印结果2】

07_XPath_02_常用语法的更多相关文章

  1. Markdown通用的常用语法说明

    前言 Markdown 是一种轻量级的 标记语言,语法简洁明了.学习容易,还具有其他很多优点,目前被越来越多的人用来写作使用. Markdown具有一系列衍生版本,用于扩展Markdown的功能(如表 ...

  2. Markdown简介以及常用语法

    Markdown简介以及常用语法 最近发现用markdown记录东西很方便,感觉和emacs的org mode很类似,但是windows下使用emacs不是很方便.特此记录一下markdown常用的语 ...

  3. Sql常用语法以及名词解释

    Sql常用语法以及名词解释 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) D ...

  4. Markdown常用语法

    什么是Markdown Markdown 是一种方便记忆.书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档. 通过Markdown简单的语法,就可以使普通文本内容具有 ...

  5. 2 hive的使用 + hive的常用语法

    本博文的主要内容有: .hive的常用语法 .内部表 .外部表 .内部表,被drop掉,会发生什么? .外部表,被drop掉,会发生什么? .内部表和外部表的,保存的路径在哪? .用于创建一些临时表存 ...

  6. sql 常用语法汇总

    Sql常用语法 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控 ...

  7. ES6常用语法

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...

  8. python MVC、MTV 框架介绍 Django 模板系统常用语法

    Django 框架简介一.MVC框架和MTV框架1.MVC 全名Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分.优势: 耦合性低 重用性高 生命 ...

  9. PHP中Smarty引擎的常用语法

    PHP中Smarty引擎的常用语法 输出今天的日期: {$smarty.now|date_format:"%H:%M %A, %B %e, %Y"} 实际上用到了PHP的time( ...

随机推荐

  1. 《Effect Java》 归纳总结

    目录: 一.创建和销毁对象 (1 ~ 7) 二.对于所有对象都通用的方法 (8 ~ 12) 三.类和接口 (13 ~ 22) 四.泛型 (23 ~ 29) 五.枚举和注解 (30 ~ 37) 六.方法 ...

  2. SVG 矢量图形格式

    SVG(Scalable Vector Graphics)是基于 XML 的一种矢量图形格式,它即可以作为单独的图形文件使用也可以嵌入到网页中并由 JavaScript 来操作,非常方便和灵活.SVG ...

  3. SQLite使用教程10 运算符

    SQLite 运算符 SQLite 运算符是什么? 运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算. 运算符用于指定 SQLite 语句中的条件 ...

  4. Android开发日志问题

    以前在Android开发中发现,日志打印好多,调试的时候各种加Log,之后就各种不删除,导致项目后期花大把时间删除日志打印. 学到一个好方法: 在所有尽可能高的父类里面加上一个常量 DEBUG ,一开 ...

  5. 转载:iPhone 6 Plus 屏幕宽度问题 375 vs 414

    首先看一张比较简单明了的 iPhone 6 与 iPhone 6 Plus 对比图,来自 PaintCode 的<The Ultimate Guide To iPhone Resolutions ...

  6. BZOJ 1199: [HNOI2005]汤姆的游戏 计算几何暴力

    1199: [HNOI2005]汤姆的游戏 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...

  7. Android 访问权限设置记录-存档留着有用!

    Android开发应用程序时,如果应用程序需要访问网络权限,需要在 AndroidManifest.xml 中加入以下代码: <uses-permission android:name=”and ...

  8. 王帅:深入PHP内核

    [问底]王帅:深入PHP内核(三)——内核利器哈希表与哈希碰撞攻击   [问底]王帅:深入PHP内核(二)——SAPI探究   [问底]王帅:深入PHP内核(一)——弱类型变量原理探究  

  9. [Effective C++ --005]了解C++默默编写并调用哪些函数

    <前言>编译器是个十分敬业的工作者,不但为你编译代码,甚至为你生成代码,不可思议吧.本文主要介绍编译器究竟会为我们生成和调用哪些代码. <空类和非空类>如果问什么样的类是空类? ...

  10. js中数组内置方法

    var arr = ['A','B','C','D']; length 计算数组的长度 arr.length//4 indexOf() 搜索一个指定的元素的位置 arr.indexOf('C');// ...