xElement Linq创建列表

时间:2011-12-30 07:32:44

标签: c# xml class xelement

我创建了一个新类来读取xml文件中的数据,如下所示:

public class Validations
{
  public string id { get; set; }
  public List<string> lhsList { get; set; }
  public List<string> rhsList { get; set; }
}

XML我想读的是:

<root>
<Validation id="val3">
    <lhs id='Estimated' />
    <lhs id='Newqurter' />
    <rhs id='Current' />
    <rhs id='FirstQuarter' />
</Validation>
.
.
.

</root>

我写的代码读取xml是:

List<Validations> vList = new List<Validations>();
vList = (from XElement xele in xdoc.Root.Elements()
  select new Validations
  { 
    id = xele.Attribute("id").Value.ToString(),
    // lhsList = ((xele.Elements().FirstOrDefault(p => p.Name == "lhs").FirstAttribute.Value
    // rhsList = ((xele.Elements().FirstOrDefault(p => p.Name == "rhs").FirstAttribute.Value
  }
).ToList<Validations>();

如何阅读List<lhsList>? 我试过了

lhsList = ((xele.Elements().FirstOrDefault(p => p.Name == "lhs").FirstAttribute.Value).ToList(), 

但它没有按预期工作。还有什么方法可以做到这一点?

1 个答案:

答案 0 :(得分:7)

您可以按如下方式创建lhs元素列表:

List<string> lhsElements = xele.Elements("lhs")
                               .Select(el => el.Attribute("id").Value)
                               .ToList();

这会选择lhs个孩子的所有xele元素,然后选择其“id”属性的值。我将留给您研究如何将其与您的代码合并。