【发布时间】:2015-10-20 09:25:24
【问题描述】:
这是我用来将数据从 List 写入 XML 文件的代码:
using (FileStream f = new FileStream(@"animals.xml", FileMode.Create, FileAccess.Write))
{
var dcsw = new DataContractSerializer(typeof(List<Animal>));
XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(f);
try
{
dcsw.WriteObject(f, animalList);
writer.Close();
f.Close();
return true;
}
catch (Exception)
{
return false;
}
这是我的 XML 文件的示例:
<ArrayOfAnimal xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/AnimalShelter">
<Animal i:type="Cat">
<ChipRegistrationNumber>12346</ChipRegistrationNumber>
<DateOfBirth>
<date>1234-11-11T00:00:00</date>
</DateOfBirth>
<IsReserved>false</IsReserved>
<Name>Yoshi</Name>
<BadHabits>Scratches</BadHabits>
<Price>51</Price>
</Animal>
<Animal i:type="Dog">
<ChipRegistrationNumber>12347</ChipRegistrationNumber>
<DateOfBirth>
<date>1234-11-11T00:00:00</date>
</DateOfBirth>
<IsReserved>false</IsReserved>
<Name>Sonic</Name>
<LastWalkDate>
<date>1234-11-11T00:00:00</date>
</LastWalkDate>
<Price>200</Price>
</Animal>
</ArrayOfAnimal>
如您所见,Cat 有一个名为“BadHabits”的节点,而 Dog 有一个名为“LastWalkDate”的不同节点。
“猫”和“狗”继承自动物类。
我见过很多将字符串解析为列表的示例。这很可行。但我的列表有不同的类型,例如自定义日期类
Animal 实例示例:
SimpleDate date1 = new SimpleDate(11, 11, 1234);
Animal cat1 = new Cat("12346", date1, "Yoshi", "Scratches");
如何从List<Animal> 中的 XML 文件中解析所有猫和狗?
【问题讨论】:
标签: c# xml winforms visual-studio-2013