【问题标题】:Read XDocument same name elements using foreach使用 foreach 读取 XDocument 同名元素
【发布时间】:2014-10-14 23:40:32
【问题描述】:

我有一个 XML 文件:

<encounter type="type1">
<strings>
    <text>Text1</text>
    <text>Text2</text>
    <text>Text3</text>
</strings>
</encounter>

如果“类型”属性正确,则将文本元素的所有值放入列表中。我的代码是:

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;
    }
}

具有属性的部分正在工作,但读取几个具有相同名称的元素对我来说很棘手。

【问题讨论】:

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


    【解决方案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();
    

    【讨论】:

      【解决方案2】:

      这种代码变体非常适合我的任务:

      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;
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-24
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        相关资源
        最近更新 更多