【问题标题】:Converting an xml into list of anonymous object将 xml 转换为匿名对象列表
【发布时间】:2014-10-17 21:33:15
【问题描述】:

我有一个包含语言详细信息的 xml,例如

<LanguageList>
   <Language code = "EN-US" name = "English - United Sates"></Language>
   <Language code = "EN-UK" name = "English - United Kingdom"></Language>
    --
    --
</LanguageList>

我想将其转换为匿名对象列表,其中每个对象包含两个字段代码和名称。

我尝试了以下 linq 表达式

 var anonList = (from u in xDoc.Descendants("LanguageList").DescendantNodes()
                   select u).ToList();

这给了 LanguageList 下的所有节点,比如

   <Language code = "EN-US" name = "English - United Sates"></Language>
   <Language code = "EN-UK" name = "English - United Kingdom"></Language>

我尝试添加一些 where 子句和其他方式.. 但无法得到它。谁能帮忙

提前谢谢..

【问题讨论】:

    标签: c# xml linq lambda xml-parsing


    【解决方案1】:

    您需要获取每个节点的属性并创建匿名对象。像这样的:

    var listOfLanguages = xDoc.Descendants("LanguageList").Descendants()
                              .Select(l => new
                              {
                                  Name = l.Attribute("name").Value,
                                  Code = l.Attribute("code").Value
                              });
    

    【讨论】:

      【解决方案2】:

      不要选择“u”,而是选择类似“new { Code = u.Attribute("code").Value, Name = u.Attribute("name").Value }"。

      【讨论】:

        【解决方案3】:

        以您拥有的代码为基础:

        var anonList = (from u in xDoc.Descendants("LanguageList")
                                      .Elements("Language")
                        select new 
                               { 
                                  Name = (string)u.Attribute("name"),
                                  Code = (string)u.Attribute("code")
                               }
                        ).ToList();
        
        1. 使用Elements() 而不是DescendantNodes() 来获取子元素。 2.您可以将XAttribute直接投给string。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多