【发布时间】:2014-01-03 22:33:48
【问题描述】:
我是 Java 中的 XPath 的新手,我对我在一个必须工作的类中发现的这段代码有以下疑问:
public String getApplicationParameter(ApplicationParameter parameter) {
Element n;
XPath xPath;
try {
xPath = XPath.newInstance("//root/settings/" + parameter.toString().replace("_", "-") );
n = (Element) xPath.selectSingleNode(CONFIG_DOCUMENT);
} catch (JDOMException e) {
return "";
}
if(n == null){
return "";
}
return n.getText();
}
其中前一个方法的ApplicationParameter输入参数是在同一个类中声明的这个enum:
public enum ApplicationParameter {
cache_size,
restub_days,
upload_processes,
download_processes,
upload_bandwidth,
download_bandwidth
}
而 CONFIG_DOCUMENT 是一个 org.jdom.Document,其中包含上一个方法工作的 XML。
所以我的疑问是:究竟选择这个 XPath 查询 是什么?
xPath = XPath.newInstance("//root/settings/" + parameter.toString().replace("_", "-") );
n = (Element) xPath.selectSingleNode(CONFIG_DOCUMENT);
Tnx
安德烈亚
【问题讨论】:
-
代码有效吗?例如,如果参数是 cache_size,则字符串替换会将其更改为“cache-size”。然后,xPath 指定
元素内的元素 ,该元素位于 元素内。其中“//”表示“文档的根元素”。 -
@splrs - //root 实际上表示文档中称为“root”的任何元素,而不仅仅是文档的根元素(也需要称为“root”)。否则你的评论是正确的。
-
啊,是的,你是对的。显然我有点生疏了! +1
标签: java xml xpath xml-parsing jdom