[英]Read XDocument same name elements using foreach
I have an XML file: 我有一个XML文件:
<encounter type="type1">
<strings>
<text>Text1</text>
<text>Text2</text>
<text>Text3</text>
</strings>
</encounter>
Idea is put all values of text elements into List if "type" attribute is correct. 如果“类型”属性正确,则将文本元素的所有值放入“列表”中。 My code is:
我的代码是:
foreach (XElement el in xDoc.Root.Elements())
{
if(el.Attribute("type").Value == choice)
{
List<string> textStrings = new List<string>();
foreach (XElement elStr in el.Element("strings")) {
textStrings.Add(elStr.Element("text").Value);
}
break;
}
}
Part with attribute is working, but read several elements wits same name is tricky for me. 具有属性的部分可以正常工作,但是读取多个具有相同名称的元素对我来说很棘手。
You need another foreach
: 您需要另一个
foreach
:
foreach (XElement elStr in el.Element("strings")) {
foreach(XElement elText in elStr.Elements("text")) {
textStrings.Add((string)elText);
}
}
Or to make it more clear: 或者更明确地说:
List<string> textStrings = xDoc.Root
.Elements()
.First(x => (string)x.Attribute("type") == choice)
.Element("strings")
.Elements("text").
.Select(t => (string)t)
.ToList();
This variant of code works well for my task: 这种代码变体可以很好地完成我的任务:
foreach (XElement el in xDoc.Root.Elements())
{
if(el.Attribute("type").Value == choice)
{
XElement elStr = el.Element("strings");
foreach (XElement elText in elStr.Elements("text"))
{
textStrings.Add((string)elText);
}
break;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.