此时我已经搜索了多个示例,详细说明了反序列化,序列化甚至其他随机无关过程的不同方法,我可能应该忽略这些过程,但仍然绝望地阅读。
我想反序列化这个XML文档:
<?xml version="1.0" encoding="UTF-8"?>
<AddressBook>
<Contact>
<Name>Steve Man</Name>
<ContactType>Family</ContactType>
<DateofBirth>1992-07-10T00:00:00</DateofBirth>
<AddressLine1>123 Fake Street</AddressLine1>
<AddressLine2>New Worthington</AddressLine2>
<AddressLine3>Regalpark</AddressLine3>
<AddressLine4 />
<Postcode>RP3 6BG</Postcode>
<Email1>Steve@gmail.com</Email1>
<Email2>Steve@tiscali.co.uk</Email2>
<Phone>01422951283</Phone>
<Mobile>07559213822/Mobile>
<AdditionalInfo>This is that weird guy.</AdditionalInfo>
</Contact>
进入C#windows表单应用程序中的上述AddressBook对象,其内容将来自XML文档中的数据。
在反序列化之后(或者我被告知)然后我可以直接使用它从应用程序本身使用它创建的对象,这意味着我可以根据需要显示/编辑/删除它们。
然后在编辑完成后,需要将新数据序列化为原始XML格式以进行存储。
我很抱歉,如果这是一个愚蠢/重复的问题,但我对C#很新,并且有很长时间的阅读和挣扎,并且非常感谢您提供的任何输入,如果问题需要任何调整或您需要更多信息然后我很乐意提供它。
答案 0 :(得分:1)
首先,我想指出这个页面。 http://azuliadesigns.com/xml-serialization-deserialization/
您应该使用此代码序列化Contact对象列表。 我相信下面的代码应该为你做的伎俩
XmlSerializer mySerializer = new XmlSerializer(typeof(List<Contact>));
StreamWriter myWriter = new StreamWriter("c:/addressbook.xml");
mySerializer.Serialize(myWriter, test);
myWriter.Close();
反序列化
List<Contact> test;
XmlSerializer mySerializer = new XmlSerializer(typeof(List<Contact>));
FileStream myFileStream = new FileStream("c:/addressbook.xml",FileMode.Open);
test = (List<Contact>)mySerializer.Deserialize(myFileStream);
我没有更改变量名称以使其尽可能清晰。我使用此方法序列化和反序列化我的设置对象。
您的Contact类应该看起来像
[Serializable]
public class Contact
{
public string Name "";
}