关于dom4j与Xpath的烦恼问题。。。。。。。。。。。。。。。。。。。。。。。。。。。
原来以为dom4j很简单,但是一用问题多多
我不知道dom4j自身对XPath支持的怎么样,我看见网上说要配合JAXEN
我就用了
我的环境是eclipse,dom4j-1.6.1.jar和jaxen-1.1-beta-7.jar都在
classpath上,xml文档zzz.xml:
<project dir="F:/pp" xmlns="http://www.mysoft.com/schema">
<applications dir="/pp/Applications">
<application dir="/pp/Applications/app1"/>
<application dir="/pp/Applications/app2"/>
</applications>
<views dir="/pp/Views"/>
</project>
程序如下:
try{
SAXReader reader = new SAXReader();
Document doc = reader.read(new File(zzz.xml));
Element root = doc.getRootElement();
//这个有值
Element e = (Element)root.elementIterator("applications").next();
//但这个列表居然为空,换做"/project/applications"也为空
//但"/project"不为空,显示5个元素
List node = doc.selectNodes("//applications");
}catch(Exception e){
System.out.println(e.getMessage());
}
这样最简单的查询怎么有错呢,是不是我引用的dom4j包和jaxen包不匹配
还是我程序写错了,谢谢指教!
问题点数:20、回复次数:6Top
1 楼masse(当午 http://blog.sina.com.cn/xukf)回复于 2005-07-21 13:26:02 得分 0
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File(filename));
List list = document.selectNodes("/project/applications" );
Iterator iter = list.iterator();
Top
2 楼eyeseaJason(稻草人)回复于 2005-07-25 16:13:06 得分 0
masse的代码和我的没什么区别啊,/project/applications我查的结果为空,而//applications
应该是对整个文档所有的applications查询,我运行的结果也是空。
到底怎么回事啊,郁闷Top
3 楼mxlmwl(飞星)回复于 2005-07-29 15:56:15 得分 10
程序没错,就是这么写的。
偶用的是dom4j1.6,jaxen1.1-beta4
是不是你的xml文件有问题?
<?xml version="1.0" encoding="UTF-8"?>Top
4 楼bluelily22(丁丁)回复于 2005-07-29 16:48:41 得分 0
从网上下的dom4j1.6不包含xpath解析器,你需要重新用一个dom4j-full.jar,这个你可以去网上下的Top
5 楼cxz7531(大花猫)回复于 2005-11-23 09:17:35 得分 10
这个问题,我也碰到了。只要把默认的命名空间xmlns="http://www.mysoft.com/schema"删除就行了,不知道什么原因?这个应该是domj的bugTop
6 楼lilygt(活的坦然)回复于 2005-11-23 13:27:36 得分 0
学习Top





