生成数据库表的xml文件

时间:2019-07-11 02:48:26

标签: c# xml-serialization asp.net-core-2.0

我正在一个项目,该项目需要生成具有所有行和列的数据库表的xml文件。为此,我认为我需要查询数据库表,我不知道该怎么办。我正在使用asp.net core 2作为后端api部分,而在前端部分使用角度。我需要以JSON返回响应,但数据应为xml之类。我怎样才能做到这一点?我没有逻辑和技术(编码)帮助。请推荐任何代码。我的数据库中也有一些可为空的属性。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以参考下面的演示,该演示检索表中的数据并将其保存到XML文件。

1。假设我有一个Employee模型,并将Employees表映射到数据库中

public class Employee
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }       
    public DateTime DateOfBirth { get; set; }
    public DateTime DateWhenJoined { get; set; }

}

//In ApplicationDbContext

public DbSet<Employee> Employees { get; set; }

2.Controller:

public class EmployeesController : Controller
{
    private readonly ApplicationDbContext _context;

    public EmployeesController(ApplicationDbContext context)
    {
        _context = context;
    }


    public void DownloadToXML()
    {

        List<Employee> emList = _context.Employees.ToList();
        if (emList.Count > 0)
        {
            var xEle = new XElement("Employees",
                from emp in emList
                select new XElement("Employee",
                    new XElement("EmployeeID", emp.Id),
                    new XElement("CompanyName", emp.Name),
                    new XElement("DateOfBirth", emp.DateOfBirth),
                    new XElement("DateWhenJoined", emp.DateWhenJoined)

                    ));
            xEle.Save("test.xml");

        }
    }
}

3。调用该操作,它将在您的根目录中生成test.xml文件。

<? xml version="1.0" encoding="utf-8"?>
<Employees>
  <Employee>
    <EmployeeID>1</EmployeeID>
    <CompanyName>Alex</CompanyName>
    <DateOfBirth>2019-05-11T03:33:00</DateOfBirth>
    <DateWhenJoined>2019-05-12T03:03:00</DateWhenJoined>
  </Employee>
  <Employee>
    <EmployeeID>2</EmployeeID>
    <CompanyName>Bob</CompanyName>
    <DateOfBirth>0001-01-01T00:00:00</DateOfBirth>
    <DateWhenJoined>2019-05-20T00:00:00</DateWhenJoined>
  </Employee>
</Employees>

请参阅https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/xdocument-class-overview