前端之家收集整理的这篇文章主要介绍了
XML系列:(8)XML解析-Dom4j的xPath技术,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!
xPath作用:主要是用于快速获取所需的节点对象。
1)导入xPath支持jar包 。 jaxen-1.1-beta-6.jar(这个jar包在dom4j的压缩包中,位置:dom4j-1.6.1\lib\jaxen-1.1-beta-6.jar)
2)使用xpath方法
ListselectNodes("xpath表达式"); 查询多个节点对象
Node selectSingleNode("xpath表达式"); 查询一个节点对象
xPath语法
符号 |
|
含义 |
/ |
绝对路径 |
表示从xml的根位置开始或子元素(一个层次结构) |
// |
相对路径 |
表示不分任何层次结构的选择元素。 |
* |
通配符 |
表示匹配所有元素 |
[] |
条件 |
表示选择什么条件下的元素 |
@ |
属性 |
表示选择属性节点 |
and |
关系 |
表示条件的与关系(等价于&&) |
text() |
文本 |
表示选择文本内容 |
|
|
|
@H_502_122@
packagecom.rk.xml.i_xpath;
importorg.dom4j.Document;
importorg.dom4j.Node;
importcom.rk.utils.Dom4jUtil;
/**
*第一个示例
*@authorRK
*
*/
publicclassDemo01
{
publicstaticvoidmain(String[]args)
{
/**
*需求:删除id值为“c002”的Cat标签
*/
Documentdoc=Dom4jUtil.openDocument("./src/animals.xml");
//1.查询id值为“c002”的Cat标签
//使用xpath技术
NodetargetNode=doc.selectSingleNode("//Cat[@id='c002']");
//2.删除标签
targetNode.detach();
Dom4jUtil.saveDocument(doc,"D:/rk/result.xml");
System.out.println("执行结束!");
}
}
packagecom.rk.xml.i_xpath;
importjava.util.List;
importorg.dom4j.Document;
importorg.dom4j.Node;
importcom.rk.utils.Dom4jUtil;
/**
*学习xPath表达式语法
*@authorRK
*
*/
publicclassDemo02
{
publicstaticvoidmain(String[]args)
{
StringsourceXML="./src/animals.xml";
StringtargetXML="D:/rk/result.xml";
Documentdoc=Dom4jUtil.openDocument(sourceXML);
Stringxpath="";
/**
*1. /绝对路径表示从xml的根位置开始或子元素(一个层次结构)
*/
xpath="/Animals";
xpath="/Animals/Cat/Home";
/**
*2.//相对路径表示不分任何层次结构的选择元素。
*/
xpath="//Dog/Home";
xpath="//Home";
/**
*3.*通配符表示匹配所有元素
*/
xpath="/Animals/*";//根标签Animals下的所有子标签
xpath="/Animals//*";//根标签Animals下的所有标签(不分层次结构)
/**
*4.[]条件表示选择什么条件下的元素
*/
xpath="/Animals/Cat[2]";//第二个的Cat标签
xpath="/Animals/*[last()]";//最后一个的Animals的子标签
xpath="//*[@id]";//带有id属性的标签
/**
*5.@属性表示选择属性节点
*/
xpath="//@id";//选择id属性节点对象,返回的是Attribute对象
xpath="//*[not(@id)]";//选择不包含id属性的标签节点
xpath="//Cat[@id='c002']";//选择id属性值为c002的Cat标签
xpath="//Cat[@id='c002'and@name='咪咪']";//选择id属性值为c002,且name属性为咪咪的Cat标签
/**
*6.text()表示选择文本内容
*/
//选择Home标签下的文本内容,返回Text对象
xpath="//Home/text()";
xpath="//Cat/Home[text()='地球']";//选择Home为“地球”的Cat标签
@SuppressWarnings("unchecked")
List<Node>list=doc.selectNodes(xpath);
for(Nodenode:list)
{
System.out.println(node);
}
Dom4jUtil.saveDocument(doc,targetXML);
}
}
原文链接:https://www.f2er.com/xml/295225.html