LINQ-阅读xml到对象列表[英] LINQ-Reading xml to object list

本文是小编为大家收集整理的关于LINQ-阅读xml到对象列表的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

<?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>

我有课

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; }
}

如何使用 linq 将此 xml 读取到 Reportgroup 对象列表中.它的语法是什么.报告组列表中的每个项目都应包含报告列表

推荐答案

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

本文地址:https://www.itbaoku.cn/post/1556995.html

问题描述

<?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>

and i have classes

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; }
}

how can i read this xml to a list of Reportgroup object using linq. What is its syntax. Each item in List of Reportgroup should contain list of Report

推荐答案

Your Reportgroup class seems to be missing a way to associate with the Reports. Anyway, you can read it like this (with a few tweaks to your classes):

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();
相关标签/搜索