2011-12-30 51 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