我有一个XML文件:
<encounter type="type1">
<strings>
<text>Text1</text>
<text>Text2</text>
<text>Text3</text>
</strings>
</encounter>
如果&#34;键入&#34>,则将所有文本元素值放入列表中。属性是正确的。我的代码是:
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;
}
}
具有属性的部分正在运行,但是阅读几个相同名称的元素对我来说很棘手。
答案 0 :(得分:1)
您需要另一个foreach
:
foreach (XElement elStr in el.Element("strings")) {
foreach(XElement elText in elStr.Elements("text")) {
textStrings.Add((string)elText);
}
}
或者说得更清楚:
List<string> textStrings = xDoc.Root
.Elements()
.First(x => (string)x.Attribute("type") == choice)
.Element("strings")
.Elements("text").
.Select(t => (string)t)
.ToList();
答案 1 :(得分:0)
这种代码变体适用于我的任务:
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;
}
}