Linq2XML 将键分离到列表中

Linq2XML separate keys into List

我想读取 config.xml 并将每个项目放入组合框中,以便 XML 文件成为数据源。这是我的代码,它只在我的组合框中提供了一个条目。如何分离键?这是我的过滤器:

C#

var xmlDocument = XDocument.Load(configfile);
var anredeItems = from key in xmlDocument.Descendants("Anrede")
                  select key.Value.Trim();
anredeNrComboBox.DataSource = anredeItems.ToList();

这是XML:

<?xml version="1.0"?>
<Config>
    <Anrede>
        <key_1>Herrn</key_1>
        <key_2>Frau</key_2>
        <key_3>Herrn Dr.</key_3>
        <key_4>Frau Dr.</key_4>
        <key_5>Herrn Dr. Med.</key_5>
    </Anrede>
</Config>

您的 Descendants("Anrede") 查询将为您获取元素 Andrede,读取其中的 Value 属性 将 return 所有后代文本的串联节点,这就是您在组合框中看到的内容。

你要的是它的每一个子元素值:

var items - doc.Descendants("Anrede")
    .Elements()
    .Select(x => x.Value.Trim())
    .ToList();

您可以这样更改代码:

var xmlDocument = XDocument.Load(configfile);
var anredeItems = xmlDocument.Root.Elements("Anrede").Elements().Select(p => p.Value.Trim());
anredeNrComboBox.DataSource = anredeItems.ToList();