Dom4J XPath 疑问

sosoone 2009-02-16 09:03:25
Xpath中的通配符为* 我想得到 bname 以“我的生活”开头的所有元素的ID 请问大家怎么得到?
我的是这样的

public void testselectXml() throws Exception
{
List<Attribute> list=null;
Element root = getElement(getDocument("d:/book.xml"));
try {

list = root.selectNodes("/books/book[@bname=\"我的生活*\"]/@ID");
} catch (Exception e) {
e.printStackTrace();
throw new Exception("出错!");
}

Iterator<Attribute> itr=list.iterator();
while(itr.hasNext())
{
Attribute at=itr.next();
System.out.println(at.getName()+"="+at.getValue());
}
}

root.selectNodes("/books/book[@bname=\"我的生活*\"]/@ID");结果没得到一个...
大家知道XPath中支持字符串的通配符吗?或者怎样才能得到 bname 以“我的生活”开头的所有节点的ID ?
XML文件如下:

<books>
<book bname="我的生活0" ac="高尔基" ID="14444f52-5df4-4d68-8c14-82d3bf0d1157" m="10.00"/>
<book bname="我的生活1" ac="高尔基" ID="4ab04873-6d68-4cab-a83a-963412c81b8d" m="10.00"/>
<book bname="我的生活2" ac="高尔基" ID="e0ec734d-47a3-4c66-b538-69064a898b8f" m="10.00"/>
<book bname="我的生活3" ac="高尔基" ID="991a8ffa-7757-4386-acb0-cc6ac34d9fd8" m="10.00"/>
<book bname="我的生活4" ac="高尔基" ID="02ddd25c-b4c3-47de-a44d-5e89f9f2bb78" m="10.00"/>
<book bname="我的生活5" ac="高尔基" ID="d6cb2304-a3de-4e84-ab54-d0bc650cbe8c" m="10.00"/>
<book bname="我的生活6" ac="高尔基" ID="20961c4d-58ff-486b-8181-45e8a718ec63" m="10.00"/>
<book bname="我的生活7" ac="高尔基" ID="ac649368-1314-4508-ab4c-7abb184a7493" m="10.00"/>
<book bname="我的生活8" ac="高尔基" ID="4fc9548c-773b-41bc-a172-1399d00ea9d1" m="10.00"/>
<book bname="我的生活9" ac="高尔基" ID="29459059-1883-4041-8132-f691d37a53bd" m="10.00"/>
<book bname="我的生活10" ac="高尔基" ID="e6100d59-1135-4c7b-b973-b93dfde93a39" m="10.00"/>
<book bname="我的生活11" ac="高尔基" ID="6457580e-8ab0-4cee-94c6-9169d1f28d9c" m="10.00"/>
<book bname="我的生活12" ac="高尔基" ID="59522961-ec99-41aa-899a-563f01389cc8" m="10.00"/>
<book bname="我的生活13" ac="高尔基" ID="f94041b6-d94d-43c1-a2dd-dd49a00c78d0" m="10.00"/>
<book bname="我的生活14" ac="高尔基" ID="b7c5006f-f807-4501-bcd7-6664e47ebc7c" m="10.00"/>
<book bname="我的生活15" ac="高尔基" ID="356056b6-98bc-40ea-89b8-96fb634b38de" m="10.00"/>
<book bname="我的生活16" ac="高尔基" ID="697bad53-e405-4de6-9c4f-6c362e6fb90e" m="10.00"/>
<book bname="我的生活17" ac="高尔基" ID="bf706265-ccf4-4f47-9e53-f5735674eb5d" m="10.00"/>
<book bname="我的生活18" ac="高尔基" ID="cb537f8d-6abd-4a12-9593-410dca6bd53b" m="10.00"/>
<book bname="我的生活19" ac="高尔基" ID="a4aae1ec-dfc1-4489-9b09-47c2e3bdf637" m="10.00"/>
<book bname="我的生活20" ac="高尔基" ID="dacef69c-8f65-4cba-b66e-60a624dc447f" m="10.00"/>
<book bname="我的生活21" ac="高尔基" ID="47d75bba-e354-48b8-895e-e65699ec1ec6" m="10.00"/>
<book bname="我的生活22" ac="高尔基" ID="caefa7e7-babf-40f6-b5f6-7e6b5d934674" m="10.00"/>
<book bname="我的生活23" ac="高尔基" ID="471030a7-a150-4108-8a74-2898c39a755c" m="10.00"/>
<book bname="我的生活24" ac="高尔基" ID="886f18f6-32e6-4423-91b0-2cb16cb8ae00" m="10.00"/>
<book bname="我的生活25" ac="高尔基" ID="dd0db04e-f3af-4b77-9860-cec39be16253" m="10.00"/>
<book bname="我的生活26" ac="高尔基" ID="73f0eb56-ff8e-40e6-add2-ebf4f2302074" m="10.00"/>
<book bname="我的生活27" ac="高尔基" ID="53bf3c82-5546-4507-b00f-001751e9301e" m="10.00"/>
<book bname="我的生活28" ac="高尔基" ID="58dd00d5-2fcf-440d-bdc8-f16c563897d2" m="10.00"/>
<book bname="我的生活29" ac="高尔基" ID="4757d547-9643-4e54-98c0-ed56f36179f3" m="10.00"/>
<book bname="我的生活30" ac="高尔基" ID="7fb79417-2e60-4938-97f8-4e801e80ea78" m="10.00"/>
<book bname="我的生活31" ac="高尔基" ID="ba675bb1-c114-486e-9744-f2c197188d81" m="10.00"/>
</books>

...全文
158 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sosoone 2009-02-18
  • 打赏
  • 举报
回复
谢谢2楼的朋友
我就是用了Xpath...
root.selectNodes("/books/book[@bname=\"我的生活*\"]/@ID");
意思是Xpath里面的值支不支持*通配符
元素是支持的"/*/book[@bname=\"我的生活\"]/@ID";这样是可以的,但是@bname=\"我的生活*\"这样就不行了 找不到好像把它当作字符串条件了*没有起到通配符的作用..
songbeirui 2009-02-17
  • 打赏
  • 举报
回复
要用Xpath! 你试试!
HashMap xmlMap = new HashMap();
xmlMap.put("xmlns","XXX");
XPath x = document.createXPath("/xmlns:books/xmlns:book[@bname=\"我的生活*\"]/@ID") ;
x.setNamespaceURIs(xmlMap);
List<Element> list = x.selectNodes(document);

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧