2011-12-30 53 views
3

我创建了新的类来读取xml文件中的数据。xElement Linq创建列表

我宣布类像

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

Xml我想读是我写来读取XML

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

</root> 

代码是

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>(); 

如何阅读列表? 我试过

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

但它不工作。有什么可以通过其他方式来做到这一点?

+1

“不工作”是一个*非常差的问题描述。 – 2011-12-30 07:34:53

+0

不应该这行})。ToList ();是这样的}}。ToList(); – MethodMan 2011-12-30 07:36:24

+0

错误无法将类型'字符串'隐式转换为'System.Collections.Generic.List ' – 2011-12-30 07:36:49

回答

6

如下您可以创建lhs元素的列表:

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

这将选择所有lhs元素是xele孩子,然后选择自己的“id”属性的值。我会让你知道如何将它与你的代码合并。

+0

It worked.Thanks。谢谢。我会永远记住这个方法。有很多需要了解xml的知识。哇。 :-) – 2011-12-30 07:42:54

+0

当然...只需将此代码放置在您的验证初始化块中即可。 – ColinE 2011-12-30 07:46:54

+0

谢谢..它真的工作。 – 2011-12-30 07:48:09