博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爪哇国新游记之三十四----Dom4j的XPath操作
阅读量:7260 次
发布时间:2019-06-29

本文共 2970 字,大约阅读时间需要 9 分钟。

Dom4j是Java访问XML的利器之一,另一个是JDom。记得当年因为粗掌握点JDomAPI但项目要求使用Dom4j还闹一阵情绪,现在看来真是没必要,只花一些时间成本就进去一个新世界绝对是值得做的一件事。更何况JDom因无人更新而停顿了。

Dom4j有两个包,一个是dom4j-1.6.1.jar,它提供基本的XML API支持,如访问节点,属性等。

还有一个是jaxen-1.1-beta-9.jar,它提供XPath支持。

关于XPath的语法,请见

言归正传,下面请看例程。

1.访问节点群

XML样本:

现在,如果我想要访问属性为chat的application节点下的所有mtLanguage子节点,XPath应该这样写:

//applications/application[@name='chat']/mtLanguage

而具体操作的Java语句是:

Document doc= DocumentHelper.parseText(responseXML);// 这个responseXML就是上面的XML样例List
elms=doc.selectNodes("//applications/application[@name='chat']/mtLanguage");System.out.println("There are "+elms.size()+" language pairs available in text translation"); for(Object obj:elms){ Element elm=(Element)obj; System.out.println("From "+elm.attributeValue("source")+" to "+elm.attributeValue("target"));}

执行上面语句输出如下:

There are 22 language pairs available in text translationFrom ar_ar to en_usFrom zh_cn to en_usFrom zh_tw to en_usFrom en_us to ar_arFrom en_us to zh_cnFrom en_us to zh_twFrom en_us to fr_frFrom en_us to de_deFrom en_us to it_itFrom en_us to ja_jpFrom en_us to ko_krFrom en_us to pt_brFrom en_us to ru_ruFrom en_us to es_esFrom fr_fr to en_usFrom de_de to en_usFrom it_it to en_usFrom ja_jp to en_usFrom ko_kr to en_usFrom pt_br to en_usFrom ru_ru to en_usFrom es_es to en_us

 

2.访问特定节点

XML样本:

Good evening

晚上好

如果我想得到上文中“晚上好”这段文字,XPath应该这样写

//rep/docs/d[last()]/p/s/t

对应的Java代码是:

Document doc= DocumentHelper.parseText(responseXML);Element elm = (Element) doc.selectSingleNode("//rep/docs/d[last()]/p/s/t");targetTxt=elm.getText();

 

3.取属性

XML样本:

1

要取根节点rep的sts属性,XPath可以这样写:

//rep/@sts

而对应的Java语句是:

System.out.println("XML="+responseXML);Document doc= DocumentHelper.parseText(responseXML);Attribute attr = (Attribute) doc.selectSingleNode("//rep/@sts");                  return attr.getText();
 
 
 
 
 
 
 
 
,如需转载请自行联系原作者
 
 
 
你可能感兴趣的文章
JDK环境配置记录
查看>>
模型的深度探究
查看>>
codeforces Round #354 (Div. 2) A
查看>>
自用VS Code 上的Markdown 编辑器css
查看>>
判断字符串中是否含有汉字及其汉字的个数
查看>>
mysql Can't connect to local MySQL server through socket 问题解决
查看>>
linux 技术网站
查看>>
jQuery使用示例详解
查看>>
Swift 数据类型
查看>>
数据结构 queue
查看>>
Go语言中的方法(Method Sets)
查看>>
简单的安卓音乐播放器
查看>>
svn提交代码
查看>>
关于头文件
查看>>
DDGScreenShot—图片擦除功能
查看>>
微软正式发布Chromium Edge开发预览版
查看>>
最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用45
查看>>
解决 'chromedriver' executable needs to be in PATH.'报错
查看>>
构建之法
查看>>
找到当前mysql group replication 环境的primary结点
查看>>