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();
我想读取 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();