XPATH 解析XML

[b]1. 表达式描述[/b]
nodename 选取此节点的所有子节点
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性

[b]2. 路径组合表达式[/b]
组合多个路径表达式,扩大选择范围;例如:
//book/title | //book/price 选取所有 book 元素的 title 和 price 元素。

[b]3. 提取xml文件中节点信息的java代码 [/b]
/**  
* "/"表示绝对路径 <br/>
* "/AA" 所有根节点AA<br/>
* "/AA/BB" 所有根节点下的所有BB节点<br/>
*
* "//" 表示相对路径<br/>
* "//BBB" 表示所有的名字为BBB的节点<br/>
* "//DDD/BBB" 表示所有父节点为DDD的BBB节点<br/>
*
* "*" 表示选择所有由星号之前的路径所定位的元素<br/>
* "/AAA/CCC/DDD/*" 选择所有路径依附于/AAA/CCC/DDD的元素<br/>
* "//*" 选择所有元素
*
* "/AAA/BBB[1]" 选择AAA的第一个BBB子元素<br/>
* "/AAA/BBB[last()]" 选择AAA的最后一个BBB子元素<br/>
*
* "//@id" 选择所有的id属性<br/>
* "//BBB[@id]" 选择有id属性的BBB元素<br/>
* "//BBB[@name]" 选择有name属性的BBB元素<br/>
* "//BBB[@*]" 选择有任意属性的BBB元素<br/>
* "//BBB[not(@*)]" 选择没有属性的BBB元素<br/>
*
* "//BBB[@id='b1']" 选择含有属性id且其值为'b1'的BBB元素<br/>
* "//BBB[@name='bbb']" 选择含有属性name且其值为'bbb'的BBB元素<br/>
* "//BBB[normalize-space(@name)='bbb']"
* 选择含有属性name且其值(在用normalize-space函数去掉前后空格后)为'bbb'的BBB元素<br/>
*
* "//*[count(BBB)=2]" 选择含有2个BBB子元素的元素<br/>
* "//*[count(*)=2]" 选择含有2个子元素的元素<br/>
* "//*[name()='BBB']" 选择所有名称为BBB的元素(这里等价于//BBB)<br/>
* "//*[starts-with(name(),'B')]" 选择所有名称以"B"起始的元素<br/>
* "//*[contains(name(),'C')]" 选择所有名称包含"C"的元素<br/>
*
* "//CCC | //BBB" 选择所有的CCC和BBB元素<br/>
* "/AAA/EEE | //BBB" 选择所有的BBB元素和所有是AAA的子元素的EEE元素<br/>
*/

InputSource inputSource = new InputSource(new FileInputStream("test.xml"));
XPathFactory factory = XPathFactory.newInstance();
XPath xPath = factory.newXPath();
XPathExpression expression = xPath.compile("//book/title[@lang=\"en\"]");
NodeList list = (NodeList) expression.evaluate(inputSource, XPathConstants.NODESET);
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
System.out.println(node.getNodeName());
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值