我想创建一个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; }
}
}