首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译时Java Xpath查询失败

编译时Java Xpath查询失败
EN

Stack Overflow用户
提问于 2012-06-04 22:07:13
回答 2查看 807关注 0票数 0

我有以下XML文档:

代码语言:javascript
复制
<application xmlns="http://www.example.com/schemas/app-config/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.example.com/schemas/app-config/1.0   http://www.example.com/schemas/app-config/1.0/app-config-1.0.xsd">
    <info name="Dummy Application" runningOn="Dev"/>
</application>

当我运行以下代码时:

代码语言:javascript
复制
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("/application/info@name");

我在compile方法上得到了一个XPathExpressionException。异常的消息就是"null“。看起来我正确地使用了XPath来定位name属性,但是我想知道是不是我所有的XMLNS和XSI声明都在这里引起了问题?如果不是,那么我完全没有头绪,也不知道是什么导致了这个异常。

有一件事-在我将xpath实例与实际的Document对象关联之前,compile怎么会失败?!?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-04 22:35:21

您只是在表达式/application/info@name中有一个语法错误,正确的语法是/application/info/@name。但是请注意,您的XML示例具有默认名称空间,因此对于XPath 1.0,表达式/application/info/@name不会选择该示例中的任何内容,而对于XPath 2.0,您需要确保为XPath求值关联定义默认名称空间。在Java1.0中,您需要在XPath代码中为默认名称空间定义一个前缀(例如df),然后使用例如/df:application/df:info/@name。我不熟悉Java,所以其他人需要帮助编写具体的代码,告诉我如何使用XPathNamespaceContext或类似的东西设置名称空间。

票数 1
EN

Stack Overflow用户

发布于 2012-06-04 22:35:52

由于XPath表达式无效,compile方法引发异常。您可能想要使用"/application/info/@name"

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10882709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档