我想创建一个XML文件来使用c#中的数据集存储数据。班级如下

public class Person
{
  [Key]
  public string id { get; set; }
  public string name { get; set; }
  public virtual ICollection<Dependant> dependants { get; set; }
}


public class Dependant
{
   public string name { get; set; }
   public string email { get; set; }
}



生成的最终XML文件应为

  <db>
    <Person>
      <id>1</id>
      <name>John</name>
      <dependants>
        <dependant>
         <name>test1</name>
         <email>test1</email>
        </dependant>
        <dependant>
         <name>test2</name>
         <email>test2</email>
        </dependant>
      </dependants>
    <Person>
  <db>


要求是像数据库一样使用它,并且应该使用

Dataset db = new Dataset();
List<Dependant> dpList = new List<Dependant>();
Dataset.PersonRow pr = new Dataset.PersonRow();
pr.name = "name";
pr.id = "pr1";
Dependant dp = new Dependant();
dp.name = "dp1";
dp.email = "dp1";
dpList.Add(dp);
dp.dependants = dpList;
db.Person.AddNewPersonRow(dp);
db.AcceptChanges();
db.WriteXML("localData");


这是讲师应遵循的结构。

我在创建数据表时遇到问题,因为我不知道在创建数据表时应该用于列表的datatypr。

我怎样才能做到这一点?

我是C#的新手,所以任何帮助都很棒!

最佳答案

试试xml linq:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataBase db = new DataBase()
            {
                Person = new Person()
                {
                    dependants = new List<Dependant>()
                }
            };


            XDocument doc = XDocument.Parse("<db><Person></Person></db>");
            XElement xPerson = doc.Descendants("Person").FirstOrDefault();

            Person person = db.Person;
            xPerson.Add(new object[] {
                new XElement("id", person.id),
                new XElement("name", person.name),
                new XElement("dependants")
            });
            XElement xDependants = xPerson.Element("dependants");

            foreach (Dependant dependant in person.dependants)
            {
                xDependants.Add(new XElement("dependant"), new object[] {
                    new XElement("name", dependant.name),
                    new XElement("email", dependant.email)
                });
            }
        }
    }
    public class Person
    {
        public string id { get; set; }
        public string name { get; set; }
        public virtual ICollection<Dependant> dependants { get; set; }
    }
    public class Dependant
    {
        public string name { get; set; }
        public string email { get; set; }
    }
    public class DataBase
    {
        public Person Person { get; set; }
    }
}

07-26 00:00
查看更多