如何在 Apache Commons 配置中使用 XPath 按值查询 XMLConfiguration?
How to query XMLConfiguration by value with XPath in Apache Commons Configuration?
所以我有以下 XML 文件。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<omg>
<configurationCreated>23/05/20 01:19:30</configurationCreated>
<sites>
<site>
<name>qwer1</name>
<another>lol1</another>
</site>
<site>
<name>qwer2</name>
<another>lol2</another>
</site>
</sites>
</omg>
我正在尝试查询名称为 qwer2
的 site
以检查它是否已存在于文件中。我该怎么做?
这是我在 Java 中尝试的方法(我有点遵循这个 guide)。
Parameters parameters = new Parameters();
FileBasedConfigurationBuilder<XMLConfiguration> builder = new FileBasedConfigurationBuilder<XMLConfiguration>(XMLConfiguration.class)
.configure(parameters
.xml()
.setFileName("mahfile.xml")
.setExpressionEngine(new XPathExpressionEngine()));
builder.setAutoSave(true);
try {
configuration = builder.getConfiguration();
} catch (ConfigurationException e) {
return;
}
configuration.getList("omg/sites[site[name='qwer2']]")
不幸的是我得到一个空列表(并且无法检查它的大小(为了检查里面有多少网站))所以查询似乎失败了。我做错了什么?
我也试过 omg/sites/site[name='qwer2']
与 this xpath exerciser 一起工作,但在我的代码中没有,我仍然得到一个空列表。
好吧,在大量阅读文档并四处游玩之后,我发现这是对元素进行计数并判断我的 xml 节点是否已经存在的最佳方式。 configurationsAt()
return xml 个节点,在本例中称为 'hierarchical configuration objects'。
configuration.configurationsAt("//site[name = 'qwer2']").size()
所以我有以下 XML 文件。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<omg>
<configurationCreated>23/05/20 01:19:30</configurationCreated>
<sites>
<site>
<name>qwer1</name>
<another>lol1</another>
</site>
<site>
<name>qwer2</name>
<another>lol2</another>
</site>
</sites>
</omg>
我正在尝试查询名称为 qwer2
的 site
以检查它是否已存在于文件中。我该怎么做?
这是我在 Java 中尝试的方法(我有点遵循这个 guide)。
Parameters parameters = new Parameters();
FileBasedConfigurationBuilder<XMLConfiguration> builder = new FileBasedConfigurationBuilder<XMLConfiguration>(XMLConfiguration.class)
.configure(parameters
.xml()
.setFileName("mahfile.xml")
.setExpressionEngine(new XPathExpressionEngine()));
builder.setAutoSave(true);
try {
configuration = builder.getConfiguration();
} catch (ConfigurationException e) {
return;
}
configuration.getList("omg/sites[site[name='qwer2']]")
不幸的是我得到一个空列表(并且无法检查它的大小(为了检查里面有多少网站))所以查询似乎失败了。我做错了什么?
我也试过 omg/sites/site[name='qwer2']
与 this xpath exerciser 一起工作,但在我的代码中没有,我仍然得到一个空列表。
好吧,在大量阅读文档并四处游玩之后,我发现这是对元素进行计数并判断我的 xml 节点是否已经存在的最佳方式。 configurationsAt()
return xml 个节点,在本例中称为 'hierarchical configuration objects'。
configuration.configurationsAt("//site[name = 'qwer2']").size()