C# 在c中查找xml元素#
我试图在我的公民列表中找到一个特定的元素,但结果总是空的。提前谢谢! 以下是我正在尝试的代码:C# 在c中查找xml元素#,c#,xml,serialization,C#,Xml,Serialization,我试图在我的公民列表中找到一个特定的元素,但结果总是空的。提前谢谢! 以下是我正在尝试的代码: string filepath = "citizens.xml"; if (!File.Exists(filepath)) { CitizensList list = new CitizensList(); Serializer.SerializeObject(filepath, list); } CitizensList citizens = Serializer.DeSerial
string filepath = "citizens.xml";
if (!File.Exists(filepath))
{
CitizensList list = new CitizensList();
Serializer.SerializeObject(filepath, list);
}
CitizensList citizens = Serializer.DeSerializeObject(filepath);
Console.WriteLine("The File {0} has this data", filepath);
citizens.print();
Console.WriteLine("Chose the name of the citizen from the console");
string name = Console.ReadLine();
CitizensList search = new CitizensList();
var matching = search.Citizen.Find(p => p.FirstName==(name));
if (matching == null)
{
Console.WriteLine("The Citizen doesn't exists.");
}
else
{
Serializer.SerializeObject(filepath, citizens);
citizens = Serializer.DeSerializeObject(filepath);
search.print();
}
以下是我在xml文件中插入正确工作的数据的代码:
Console.WriteLine("Insert the data of the citizen");
Console.WriteLine("Name:");
string nm = Console.ReadLine();
Console.WriteLine("Surname:");
string sn = Console.ReadLine();
Console.WriteLine("Email:");
string email = Console.ReadLine();
Console.WriteLine("Phone:");
string no = Console.ReadLine();
Citizens citizen = new Citizens();
if (citizens.Citizen.Count == 0)
citizen.Id = 1;
else
citizen.Id = Convert.ToInt32(citizens.Citizen.Last<Citizens>().Id) + 1;
citizen.FirstName = nm;
citizen.Lastname = sn;
citizen.Email = email;
citizen.PhoneNr = no;
citizens.Citizen.Add(citizen);
Serializer.SerializeObject(filepath, citizens);
citizens = Serializer.DeSerializeObject(filepath);
citizens.print();
Console.WriteLine(“插入公民的数据”);
Console.WriteLine(“名称:”);
字符串nm=Console.ReadLine();
控制台。WriteLine(“姓氏:”);
字符串sn=Console.ReadLine();
控制台。WriteLine(“电子邮件:”);
字符串email=Console.ReadLine();
控制台。WriteLine(“电话:”);
string no=Console.ReadLine();
公民=新公民();
如果(citizens.Citizen.Count==0)
公民Id=1;
其他的
citizen.Id=Convert.ToInt32(citizens.citizen.Last().Id)+1;
citizen.FirstName=nm;
citizen.Lastname=sn;
citizen.Email=电子邮件;
citizen.PhoneNr=否;
citizens.Citizen.Add(Citizen);
Serializer.SerializeObject(文件路径,公民);
公民=序列化程序.反序列化对象(文件路径);
公民。打印();
您正在搜索中搜索,这是一个新创建的(只能假设)空列表
var matching = search.Citizen.Find(p => p.FirstName==(name));
您应该在公民
中搜索,您的列表从文件中读取:
var matching = citizens.Citizen.Find(p => p.FirstName == name);
您正在search
中搜索,这是一个新创建的(只能假设)空列表
var matching = search.Citizen.Find(p => p.FirstName==(name));
您应该在公民
中搜索,您的列表从文件中读取:
var matching = citizens.Citizen.Find(p => p.FirstName == name);
您刚刚初始化的数据在哪里?序列化和反序列化列表中没有数据。如果“citizens.xml”实际存在任何数据,您是否调试了您的程序?是的,事实上我以前添加了一个insert方法来在xml文件中插入数据您确定要搜索的是姓氏吗,因为这是您的搜索条件Citizen.Find(p=>p.FirstName==(name))代码>。还要确保大小写正确。案例:01)检查使用相应数据生成的XML文件,02)反序列化时进行调试,03)检查linq中的大小写。您刚刚初始化的数据在哪里?序列化和反序列化列表中没有数据。如果为“citizes.XML”,您是否调试了程序物理上存在任何数据?是的,事实上我以前添加了一个insert方法来在xml文件中插入数据您确定要搜索的是姓氏,因为这是您的搜索条件Citizen.Find(p=>p.FirstName==(name))代码>。此外,还要确保大小写正确。案例:01)检查使用相应数据生成的XML文件,02)反序列化时进行调试,03)检查linq中的大小写。