java xpath 命名空间_Java XPath:使用默认名称空间xmlns的查询
我要对此文件执行XPath查询(显示的摘录):这是我正在使用的代码的摘要:DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = domFactory.newDocumentBuilder();Document document = builder.pars
我要对此文件执行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)。
有没有办法使默认名称空间正常工作?
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)