抱歉,如果对此进行了记录,但我无法在官方文档中找到此信息。

我正在使用XMLConfiguration加载此文件,但是config.containsKey ("aliases")返回false,而config.containsKey ("aliases.alias")返回true。我是否被迫检查“ aliases.alias”,或者是否有办法确定“ aliases”是否作为节点存在?

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <name>Vocabulary</name>
    <aliases>
        <alias>Dictionary</alias>
    </aliases>
    <extensions>
        <ext>dic</ext>
        <ext>txt</ext>
        <ext>pdf</ext>
        <ext>doc</ext>
    </extensions>
    <scanmode>1</scanmode>
</configuration>

最佳答案

您可以使用HierarchicalConfiguration来检查该节点是否存在。

if(!config.configurationAt("aliases").isEmpty())


containsKey()可以正常工作。
布尔布尔containsKey(String key)
检查指定的密钥是否包含在此配置中。注意,对于此配置,术语“包含”表示密钥具有关联的值。如果此键有一个没有值但子节点(定义的或未定义的)的节点,则此方法仍将返回FALSE。

这是代码
导入org.apache.commons.configuration.ConfigurationException;
导入org.apache.commons.configuration.XMLConfiguration;

public class HirerarchicalConfig{

    public static boolean checkIfNodeExists(String nodeName,XMLConfiguration config){
        if(!config.configurationAt(nodeName).isEmpty())
            return true;
        else
            return false;
    }
    public static void main(String[] args) throws ConfigurationException{

        XMLConfiguration config = new XMLConfiguration("configFile.xml");
        boolean aliasesNode = checkIfNodeExists("aliases",config);
        System.out.println(aliasesNode);
    }
}

10-08 18:46