简单用DOM4J结合XPATH解析XML
由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便,结合XPATH就可以直接获取到某个元素
使用dom4j支持xpath的操作的几种主要形式
第一种形式
/AAA/DDD/BBB: 表示一层一层的,AAA下面 DDD下面的BBB
第二种形式
//BBB: 表示和这个名称相同,表示只要名称是BBB,都得到
第三种形式
/*: 所有元素
第四种形式
BBB[1]: 表示第一个BBB元素
BBB[last()]:表示最后一个BBB元素
第五种形式
//BBB[@id]: 表示只要BBB元素上面有id属性,都得到
第六种形式
//BBB[@id='b1'] 表示元素名称是BBB,在BBB上面有id属性,并且id的属性值是b1
使用dom4j支持xpath具体操作
默认的情况下,dom4j不支持xpath,如果想要在dom4j里面是有xpath,第一步需要,引入支持xpath的jar包,如下:
aaarticlea/png;base64,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" alt="" />
在dom4j里面提供了两个方法,用来支持xpath
selectNodes("xpath表达式"),获取多个节点
selectSingleNode("xpath表达式"),获取一个节点
应用简单案例:
1.xml文件
<?xml version="1.0" encoding="UTF-8"?> <class>
<student>
<name>张三</name>
<sid>111111</sid>
</student>
<student id="stu1">
<name>李四</name>
<sid>222222</sid>
</student>
</class>
Java代码
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class Dom4jXpath { public static void main(String[] args) throws Exception {
select();//查询所有name的值
//select2();//查询id=stu1的学生的name的值
}
//查询所有name的值
private static void select() throws Exception {
SAXReader saxReader=new SAXReader();
Document document=saxReader.read("src/1.xml");
List<Node>list=document.selectNodes("//name");
for(int i=0;i<list.size();i++)
System.out.println(list.get(i).getText());
}
//查询id=stu1的学生的name的值
private static void select2() throws Exception {
SAXReader saxReader=new SAXReader();
Document document=saxReader.read("src/1.xml");
Node node=document.selectSingleNode("//student[@id='stu1']/name");
System.out.println(node.getText());
}
}
简单用DOM4J结合XPATH解析XML的更多相关文章
- java使用dom4j和XPath解析XML与.net 操作XML小结
最近研究java的dom4j包,使用 dom4j包来操作了xml 文件 包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类), ...
- 使用Dom4j的xPath解析xml文件------xpath语法
官方语法地址:http//www.w3school.com.cn/xpath/index.asp xpath使用路径表达式来选取xml文档中的节点或节点集.节点是通过沿着路径(path)或者步(ste ...
- JAVA通过XPath解析XML性能比较(原创)
(转载请标明原文地址) 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 XML文件解析的4种方法 通常解析XML文件有四种经典的方法.基本的解析方式有两种 ...
- JAVA通过XPath解析XML性能比较
转自[http://www.cnblogs.com/mouse-coder/p/3451243.html] 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 ...
- 使用dom4j创建和解析xml文件
使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建x ...
- dom4j生成和解析xml文件
dom4j生成和解析xml文件 要生成和解析如下格式的xml文件: <?xml version="1.0" encoding="UTF-8"?> & ...
- DOM4J生成、解析XML实例
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterato ...
- Xpath解析xml
Xpath解析xml其实最主要的是查找xml文档中信息,而且不需要了解xml文档结构 package com.huawei.xml; import java.io.InputStream;import ...
- Dom4J配合XPath解析schema约束的xml配置文件问题
如果一个xml文件没有引入约束,或者引入的是DTD约束时,那么使用dom4j和xpath是可以正常解析的,不引入约束的情况本文不再展示. 引入DTD约束的情况 mybook.dtd: <?xml ...
随机推荐
- ACM/ICPC 之 SPFA-兑换货币(POJ1860)
//水题-SPFA解法 //套汇是指兑换货币后能使本金上升 //给定本金货币编号,货币间的汇率和手续费,求能否套汇成功 //Time:16Ms Memory:200K #include<iost ...
- 11. javacript高级程序设计-DOM扩展
1. DOM扩展 1.1 选择符API l querySelector() 接收一个css选择符,返回与该模式匹配的第一个元素 l querySelectorAll() 接收一个css选择符,返回所有 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)
*********************************************************************** * Title : ZSDF003 ...
- 原:[eclipse启动错误] JVM terminated.Exit code=2
启动eclipse的时候忽然出现以下错误: 解决方案: 删除环境变量PATH或者Path中的 C:\ProgramData\Oracle\Java\javapath
- KMP单模快速字符串匹配算法
KMP算法是由Knuth,Morris,Pratt共同提出的算法,专门用来解决模式串的匹配,无论目标序列和模式串是什么样子的,都可以在线性时间内完成,而且也不会发生退化,是一个非常优秀的算法,时间复杂 ...
- Mathematics:Pseudoprime numbers(POJ 3641)
强伪素数 题目大意:利用费马定理找出强伪素数(就是本身是合数,但是满足费马定理的那些Carmichael Numbers) 很简单的一题,连费马小定理都不用要,不过就是要用暴力判断素数的方法先确定是 ...
- C# 对象操作
//********************************************************************************* //************** ...
- IOS- 自定义 UIButton
#pragma mark init方法内部默认会调用initWithFrame: - (id)initWithFrame:(CGRect)frame { self = [super initWithF ...
- oc弹出框显示提示消息
- (void)ShowHUDTitle:(NSString *)title andDelay:(NSTimeInterval)delayTime { if (HUD) { [HUD removeFr ...
- 编译QtAV工程库
去https://github.com/wang-bin/QtAV下载源代码 去https://sourceforge.net/projects/qtav/files/depends/QtAV-dep ...