【发布时间】:2016-01-28 20:25:36
【问题描述】:
给定以下 XML(示例):
<?xml version="1.0" encoding="UTF-8"?>
<rsb:VersionInfo xmlns:atom="http://www.w3.org/2005/Atom" xmlns:rsb="http://ws.rsb.de/v2">
<rsb:Variant>Windows</rsb:Variant>
<rsb:Version>10</rsb:Version>
</rsb:VersionInfo>
我需要获取Variant 和Version 的值。我目前的方法是使用 XPath,因为我不能依赖给定的结构。我只知道文档中某处有一个元素rsb:Version。
XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//Variant";
InputSource inputSource = new InputSource("test.xml");
String result = (String) xpath.evaluate(expression, inputSource, XPathConstants.STRING);
System.out.println(result);
然而这并没有输出任何东西。我尝试了以下 XPath 表达式:
- //变体
- //变体/text()
- //rsb:变体
- //rsb:Variant/text()
什么是正确的 XPath 表达式?或者有没有更简单的方法来获取这个元素?
【问题讨论】:
-
XPathFactory 需要使用 NamespaceContext 创建。一旦你弄清楚了,
•//rsb:VariantXPath 应该可以工作了。 -
@JerryM 的评论确实解决了我的问题。