将XML文档反序列化为地址簿

时间:2018-04-16 14:45:10

标签: c# xml serialization deserialization

此时我已经搜索了多个示例,详细说明了反序列化,序列化甚至其他随机无关过程的不同方法,我可能应该忽略这些过程,但仍然绝望地阅读。

我想反序列化这个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#很新,并且有很长时间的阅读和挣扎,并且非常感谢您提供的任何输入,如果问题需要任何调整或您需要更多信息然后我很乐意提供它。

1 个答案:

答案 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 "";
}