【发布时间】:2023-03-13 12:15:01
【问题描述】:
好的,几年前我曾经使用过 apache commons config,可能忘记了一些东西。
我对正在发生的事情感到有些困惑,这对我来说似乎违反直觉。
所以,这是我的代码:
public static void main(String[] args) throws ConfigurationException {
XMLConfiguration config = new XMLConfiguration("config/base-config.xml");
config.setExpressionEngine(new XPathExpressionEngine());
List<Object> recipients;
recipients = config.getList("emailRecipients/recipient");
System.out.println("Recipients: " + recipients.size());
for (Object recipient : recipients) {
System.out.println("\tRecipient: " + recipient);
}
}
这是我的 xml 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<emailRecipients>
<recipient>me@email.com</recipient>
<recipient>you@email.com</recipient>
</emailRecipients>
但是,我的代码不会像我预期的那样读取收件人标签。
相反,我必须将我的配置文件修改为如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<arbitrary-outer-tag>
<emailRecipients>
<recipient>me@email.com</recipient>
<recipient>you@email.com</recipient>
</emailRecipients>
</arbitrary-outer-tag>
因此,在查找我需要的配置项时,似乎必须在 XPath 表达式中忽略最外面的标记。
这是为什么呢?这是设计使然吗?我做错了什么吗?
【问题讨论】: