【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的存储格式,值的我们好好学习!(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |