Linq2XML将密钥分成List

时间:2016-06-01 11:27:00

标签: c# xml linq linq-to-xml

我想读取一个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>

2 个答案:

答案 0 :(得分:1)

您的Descendants("Anrede")查询将获取元素Andrede,并且读取Value属性将返回所有后代文本节点的连接,这是您在组合框。

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

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

答案 1 :(得分:1)

您可以像这样更改代码:

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