Dom4j 存在命名空间导致document.selectNodes() 无返回结果

本文介绍了解决DOM4J中因XML命名空间而导致XPath选择器无法正常工作的问题。通过获取命名空间URI并将其应用于XPath表达式中,可以成功选取到带有命名空间的元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml文件中存在命名空间导致 document.selectNodes("//linuxidc/book") 无返回结果
 如:
 <linuxidc xmlns="http://www.linuxidc.com">
 <book>
 <title></title>
 <des></des>
 ...
 </book>
 </linuxidc>

推荐阅读:

dom4j+xpath读取xml文件配置Oracle数据库连接 http://www.linuxidc.com/Linux/2013-04/83405.htm

Struts2+jQuery+Dom4j实现服务器返回Xml文档 http://www.linuxidc.com/Linux/2012-07/65680.htm

Java使用dom4j解析XML字符串 http://www.linuxidc.com/Linux/2013-07/87734.htm

解决方法

  // 获得xml对象
                Document doc = DocumentHelper.parseText(xml);
  Map map = new HashMap();
  // 获得命名空间
  String nsURI = doc.getRootElement().getNamespaceURI();
  map.put("xmlns", nsURI);
  // 创建解析路径,就是在普通的解析路径前加上map里的key值
  XPath x = doc.createXPath("//xmlns:linuxidc/xmlns:book");
  x.setNamespaceURIs(map);
  // 这样就拿到结果了
  List<Node> nodes = x.selectNodes(doc);
  Node node = x.selectSingleNode(doc);

本文永久更新链接地址http://www.linuxidc.com/Linux/2014-04/100589.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值