如果这被记录在案,我深表歉意,但我无法在官方文档中找到它。
我正在使用 XMLConfiguration
加载此文件,但 config.containsKey ("aliases")
返回 false 并且 config.containsKey ("aliases.alias ")
返回真。我是被迫检查“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() 它按预期工作。 public boolean containsKey(字符串键) 检查指定的 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);
}
}
关于java - Apache Commons 配置 containsKey 在现有 key 上返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32895398/