如何从所有这些节点获取值?

时间:2016-01-31 02:59:27

标签: java plugins minecraft bukkit

                Set<String> companies = companiesFile.getConfig().getConfigurationSection("companies").getKeys(false);

                sender.sendMessage("§2List of companies:");

                for (String s : companies)
                {
                    sender.sendMessage("§2" + companiesFile.getConfig().getString(s + ".name"));
                }

以上是我到目前为止的代码。我正在编写一个bukkit插件,我正在试图找出如何获得价值&#34; name&#34;来自所有公司。你知道如何获得价值&#34; name&#34;来自所有公司?这是配置:

    companies:
      simpleco:
        expenses: 3000
        revenue: 6000
        name: SimpleCo
      projectempireco:
        expenses: 5000
        revenue: 5500
        name: ProjectEmpireCo

1 个答案:

答案 0 :(得分:1)

要获取每个公司的实际名称值,您可以先在companies.get(key + ".name")部分中获取所有直接子密钥(就像您已经完成的那样),这样如果您以后添加更多顶级部分你赢得的配置文件不必遍历那些。

如果您确定每家公司都会分配一个名称值,那么您可以直接使用直接路径(现在我们拥有每个公司部分的名称),并使用{{1}行。 },其中key是公司部分的名称(例如simpleco),公司是所有公司的ConfigurationSection,或者您可以创建新的ConfigurationSection一个级别更深层次(每个公司一个)并通过调用该特定部分的"name"来检索密钥getValues(false).get("name")的值。它看起来像这样:

// Get config file, here called "fileConfig"
ConfigurationSection companies = fileConfig.getConfigurationSection("companies"); // The "companies" section of the config file

for (String companyKey : companies.getKeys(false)) { // For each company key in the set
    String name = (String) companies.get(companyKey + ".name"); // Either use the path to retrieve name value

    // OR

    ConfigurationSection companySection = companies.getConfigurationSection(companyKey); // Create a new section one level deeper
    name = (String) companySection.getValues(false).get("name"); // Retrieve name by getting value of key named "name"
}