Commons JXPath - DOM/JDOM Document Access
除了 JavaBean,JXPath 也可以访问 DOM/JDOM。
示例 XML:
<?xml version="1.0" encoding="utf-8"?>
<book>
<title>Head First Design Patterns</title>
<authors>
<author>
<firstName>Eric</firstName>
<lastName>Freeman</lastName>
<gender>F</gender>
<birthday>1976-09-14</birthday>
</author>
<author>
<firstName>ElElisabeth</firstName>
<lastName>Freeman</lastName>
<gender>M</gender>
<birthday>1983-03-27</birthday>
</author>
</authors>
<publisher>
<name>中国电力出版社</name>
<address>北京市XX区YY路Z号</address>
<contacts>
<contact type='tel'>010-12345678</contact>
<contact type='fax'>010-87654321</contact>
<contact type='email'>test@163.com</contact>
</contacts>
</publisher>
<isbn>9787508353937</isbn>
<price>98</price>
</book>
book.xml
DOM/JDOM Document Access
Document document = // get from book.xml ...
JXPathContext context = JXPathContext.newContext(document);
String aBirthday = (String) context.getValue("book/authors/author[firstName='ElElisabeth']/birthday");
String pEmail = (String) context.getValue("book/publisher/contacts/contact[@type='email']");
Getting a Value vs. Selecting a Node
JXPathContext 有两组相似的 API:getValue(xpath)/iterate(xpath) 和 selectSingleNode(xpath)/selectNodes(xpath)。对 JavaBeans 和类似的 Java 对象模型,这两组 API 是等效的。但是,对 DOM/JDOM,这两组 API 则有个不同的地方:selectSingleNode(xpath) 和 selectNodes(xpath) 返回的是 Nodes,而 getValue() 和 iterate(xpath) 返回的则是节点的文本内容。
例如,对于相同的 XPath,getValue("/book/isbn") 会返回字符串 "9787508353937",而 selectSingleNode("/book/isbn") 则返回 Element(<isbn>9787508353937</isbn>)(具体类型取决是 DOM 还是 JDOM)。
Commons JXPath - DOM/JDOM Document Access的更多相关文章
- Commons JXPath - Modifying Object Graphs
JXPath 除了可以 XPath 语法访问 JavaBeans.DOM/JDOM,也可以对其属性赋值. 以下面的 JavaBeans 为例. package com.huey.jxpath; imp ...
- sax/dom/jdom/dom4j的区别
sax/dom/jdom/dom4j的区别[转] 博客分类: xml 网上能够查到很多的4种解析方式的区别,我再做一下摘录和总结,顺带给自己做个备份. SAX sax分析器在对xml文档进行分析时 ...
- javascript 对象(DOM)document window history
Javascript对象 目录: window对象 document对象 history对象 navigator对象 window对象 所有浏览器都支持window对象,它表示浏览器窗口. 所有jav ...
- DOM 之 document 查找元素方法
DOM 之 document 查找元素方法 getElementById("idName"); // 始终取得第一个 idName 的元素 getElementsByTagName ...
- 认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法。元素、属性和文本的树结构(节点树)。
认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码 ...
- Commons JXPath - Object Graph Traversal
JXPath 提供了使用 Xpath 语法操纵符合 Java 类命名规范的 JavaBeans 的工具.也支持 maps.DOM 和其他对象模型.对于深层次结构的 JavaBean,使用 JXPath ...
- HTML DOM 实例-Document 对象
使用 document.write() 向输出流写文本 <html><body><script type="text/javascript">d ...
- DOM与document的区别
DOM: DOM 全称是 Document Object Model,也就是文档对象模型. DOM 就是针对 HTML 和 XML 提供的一个API.什么意思?就是说为了能以编程的方法操作这个 HTM ...
- XML DOM(Document Object Model)
1.XML DOM 是用于获取.更改.添加或删除 XML 元素的标准.2.节点(XML 文档中的每个成分都是一个节点): 整个文档是一个文档节点: 每个XML元素是一个元素 ...
随机推荐
- ASP.NET WebForm中前台代码如何绑定后台变量
转载自 http://www.cnblogs.com/lerit/archive/2010/10/22/1858007.html 经常会碰到在前台代码中要使用(或绑定)后台代码中变量值的问题.一般有& ...
- Light oj 1236 - Pairs Forming LCM (约数的状压思想)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1236 题意很好懂,就是让你求lcm(i , j)的i与j的对数. 可以先预处理1e7以 ...
- JavaScript- 获取经度纬度
昨天获得一个小需求,需要取地理位置. 通过以下的JS能获得经度和纬 if(navigator.geolocation) { navigator.geolocation.getCurrentPositi ...
- C++中标准容器Vector,元素操作.insert()小结
insert() 函数有以下三种用法: iterator insert( iterator loc, const TYPE &val ); //在指定位置loc前插入值为val的元素,返回指 ...
- VS 2012单元测试和测试资源管理器
时间:2012-08-27 17:29 来源:张善友 博客园 字体:[大 中 小] 现在您可以在您的项目当中自行选择 NUnit 或是 xUnit 之类的套件. 而且这次的测试资源管理器也完全以”信息 ...
- UVALive 7070 The E-pang Palace 暴力
The E-pang Palace Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/problem ...
- cdoj 1136 邱老师玩游戏 树形背包
邱老师玩游戏 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1136 Desc ...
- MyBatis之八:需要说明的几个java api的生命周期以及封装
学习mybatis不得不了解SqlSessionFactoryBuilder.SqlSessionFactory.SqlSession.这里主要是讲解它们的生命周期以及一般最佳实践. 一般来说对象的生 ...
- MyBatis之六:缓存
MyBatis 3中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置.默认情况下是没有开启缓存的,除了局部的session缓存,可以增强变现而且处理循环依赖也是必须的.要开启二级缓存,你需 ...
- Mouse_event 鼠标点击
//这样就是左键单击 mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );// 按下mouse_event( MOUSEEVENTF_LEFTUP, 0, ...