【XML】xpath及dom4j操作xpath
xpath是啥w3school的介绍:
我的理解为xpath就是每个标签节点的路径。 xpath的七种节点类型:
节点的关系:父、子、同胞、先辈、后代 节点的选取:基础选取1、 节点名: 选取此节点的所有子节点。 举例: <?xml version="1.0" encoding="UTF-8"?>
<book>
<西游记 id="x001">
<作者>吴承恩1</作者>
<作者>吴承恩2</作者>
<朝代>明朝</朝代>
</西游记>
<红楼梦 id="x002">
<作者>曹雪芹</作者>
</红楼梦>
</book>
1、 book:选取book下的所有节点; 高级选取我们直接看例子: <?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="x001">
<作者>吴承恩1</作者>
<作者>吴承恩2</作者>
<朝代>明朝</朝代>
<price>56.00</price>
</book>
<book id="x002">
<作者>曹雪芹</作者>
<price>33.00</price>
</book>
</books>
1、 /books/book[1] 选取属于 books 子节点的第一个 book 元素。
xpath的轴选取:1、 ancestor:选取当前节点的所有先辈(父、祖父等) 2、 ancestor-or-self:选取当前节点的所有先辈(父、祖父等)以及当前节点本身 3、 attribute:选取当前节点的所有属性 4、 child:选取当前节点的所有子元素。 5、 descendant:选取当前节点的所有后代元素(子、孙等)。 6、 descendant-or-self:选取当前节点的所有后代元素(子、孙等)以及当前节点本身。 7、 following:选取文档中当前节点的结束标签之后的所有节点。 8、 namespace:选取当前节点的所有命名空间节点 9、 parent:选取当前节点的父节点。 10、 preceding:选取文档中当前节点的开始标签之前的所有节点。 11、 preceding-sibling:选取当前节点之前的所有同级节点。 12、 self:选取当前节点。 例子: child::book:选取所有属于当前节点的子元素的 book 节点 attribute::lang:选取当前节点的 lang 属性 child::*:选取当前节点的所有子元素 attribute::*:选取当前节点的所有属性 child::text():选取当前节点的所有文本子节点 child::node():选取当前节点的所有子节点 descendant::book:选取当前节点的所有 book 后代 ancestor::book:选择当前节点的所有 book 先辈 ancestor-or-self::book:选取当前节点的所有book先辈以及当前节点(假如此节点是book节点的话) child::*/child::price:选取当前节点的所有 price 。 dom4j使用xpath1、引入名为jaxen的jar包
既然dom4j要求这种格式,我们在通过xpath操作节点时就用这种格式好了, String xpathCase=
"/*[name()='book']/*[name()='chapter'][3]/*[name()='section']";
List<Element> nodes= node.selectNodes(xpathCase);
即可选到book节点下的第三个chapter节点的所有section节点,有木有很方便! xml仍然是数据表示的优秀格式,很多json无法取代的地方,甚至也作为nosql的存储格式,值的我们好好学习!(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c# – Linq的FirstOrDefault
- c# – 为什么类数组比结构数组消耗多20%的内存?
- xml学习(7) .net 获取xml节点或者属性最大值
- 具有Flash Access保护的HTTP Dynamic Streaming
- vb.net – 如何编辑存储在SQL Server表中的Word文档(.docx)
- ajax发送请求
- ruby-on-rails-3.2 – 使用Ruby on Rails 3.2.14 / Ruby 2.
- SQLite的版本迁移FMDB适配器为iPhone
- 如何从命令行为一个swift应用程序运行XCTest?
- c# – 如何将通用枚举中的多个转换器参数传递给布尔转换器