2012-01-09 12 views
1
<?xml version="1.0" encoding="utf-8" ?> 
<reportgroups> 
    <Reportgroup id="1" name="reportGroup1"> 
    <report id="1" name="report1" isSheduled="false"></report> 
    <report id="2" name="report2" isSheduled="false"></report> 
    <report id="3" name="report3" isSheduled="false"></report> 
    </Reportgroup> 
    <Reportgroup id="2" name="reportGrouop2"> 
    <report id="4" name="report4" isSheduled="false"></report> 
    </Reportgroup> 
    <Reportgroup id="3" name="reportGrouop3"></Reportgroup> 
</reportgroups> 

をオブジェクトに、私はクラスの私は、LINQを使用してReportgroupオブジェクトのリストにこのXMLを読み取ることができますどのようにLINQ-XMLの読み取りは、リストに

public class Reportgroup 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
} 

public class Report 
{ 
    public int id { get; set; } 
    public string name { get; set; } 
    public bool isSheduled { get; set; } 
} 

を持っています。 構文は何ですか。 レポートグループ一覧の各項目には、レポートの一覧が含まれている必要があります。

答えて

3

Reportgroupクラスには、Reportに関連付ける方法がありません。とにかく、次のように読むことができます(クラスを少し微調整)。

public class ReportGroup // CamelCase!!! 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public List<Report> Reports { get; set; } // need to hold the associated reports 
} 

public class Report 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public bool IsSheduled { get; set; } 
} 

var doc = XDocument.Load("path/to/file.xml"); 
var reportGroups = doc.Element("reportgroups") 
    .Elements("Reportgroup") 
    .Select(rg => new ReportGroup 
    { 
     Id = (int)rg.Attribute("id"), 
     Name = (string)rg.Attribute("name"), 
     Reports = rg.Elements("report") 
      .Select(r => new Report 
      { 
       Id = (int)r.Attribute("id"), 
       Name = (string)r.Attribute("name"), 
       IsScheduled = (bool)r.Attribute("isScheduled"), 
      }).ToList(); 
    }).ToList(); 
関連する問題