【工程截图】

【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. 【Stage3D学习笔记续】山寨Starling(四):渲染代码实现及测试程序

    本章会实现最核心的代码,所以涉及点会比较多,这里会发布一个版本,方便日后的回退查看. 点击下载:https://codeload.github.com/hammerc/hammerc-study-St ...

  2. Nodejs 动态加载 require

    nodejs的require是保存在缓存中的,即require一次之后再次require值是不会改变的. 如: a.js var a = 12; exports.a = a; test.js var ...

  3. mybatis 打印sql log配置

    mybatis 打印sql log, 方便调试.如何配置呢? log4j.xml : <!-- 打印sql start --> <appender name="IBatis ...

  4. Css基础-类选择器

    类选择器以一个.显示 <p class="pclass">这是第一个class</p> .pclass { color:red; } <div cla ...

  5. ThindPad x230 无法U盘启动

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  6. 安装好Windows 8后必做的几件事情,让你的Win8跑的更快更流畅。

    1.关闭家庭组,因为这功能会导致硬盘和CPU处于高负荷状态. 关闭方法:Win+C-设置-更改电脑设置-家庭组-离开 如果用不到家庭组可以直接把家庭组服务也给关闭了:控制面板-管理工具-服务-Home ...

  7. IOS设置button 图片 文字 上下、左右

    [btn setImage:imgNor forState:UIControlStateNormal]; [btn setImage:imgSel forState:UIControlStateSel ...

  8. 【转】linux下cppunit的安装

    以下内容来自:http://www.51testing.com/html/51/279751-170160.html 1. 安装 cppunit的下载地址为:http://sourceforge.ne ...

  9. 【23】宁以non-member、non-friend替换member函数

    1.non-member方法与member方法没有本质区别,对于编译器来说,都是non-member方法,因为member方法绑定的对象,会被编译器转化为non-member方法的第一个形参.non- ...

  10. BZOJ 2257: [Jsoi2009]瓶子和燃料 裴蜀定理

    2257: [Jsoi2009]瓶子和燃料 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...