java xpath 命名空间_Java XPath:使用默认名称空间xmlns的查询

我要对此文件执行XPath查询(显示的摘录):

这是我正在使用的代码的摘要:

DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = domFactory.newDocumentBuilder();

Document document = builder.parse(new File(testFile));

XPathFactory factory = XPathFactory.newInstance();

XPath xpath = factory.newXPath();

xpath.setNamespaceContext( new NamespaceContext() {

public String getNamespaceURI(String prefix) {

...

String result = xpath.evaluate(xpathQueryString, document);

System.out.println(result);

我面临的问题是,在XPath查询中引用默认名称空间时,不会调用getNamespaceURI方法来解决它。例如,此查询不提取任何内容:

//xmlns:ModelClass.Parent/xmlns:Core.Reference[@type=\"Model\"]/@package

现在,我尝试通过用xmlns假前缀替换来“诱骗”解析器d,然后相应地编写getNamespaceURI方法(以便http://xml.sap.com/2002/10/metamodel/webdynpro在d遇到问题时返回)。在这种情况下,将getNamespaceURI调用,但是XPath表达式求值的结果始终是一个空字符串。

如果我从文件和XPath查询表达式中删除名称空间,则可以获得所需的字符串(com.test.mypackage)。

有没有办法使默认名称空间正常工作?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值