XML序列化和反序列化

序列化一些复杂的xml数据

    //[Serializable]
    public class Person
    {
        [XmlAttribute]
        public string Name;
        public string Age;
        public string Sex;
    }

  //[Serializable]
    public class Part
    {
        [XmlArrayAttribute("Persons")]
        public Person[] Persons;
    }

 

序列化:
            string filename = “test.xml”;

            XmlSerializer serializer = new XmlSerializer(typeof(Part));
            TextWriter writer = new StreamWriter(filename);
            Part pt = new Part();

            // Creates Person
            Person p1 = new Person();
            p1.Name = "liming";
            p1.Sex = "male";
            p1.Age = "23";

            Person p2 = new Person();
            p2.Name = "lili";
            p2.Sex = "female";
            p2.Age = "22";

            Person[] Persons = { p1, p2 };
            pt.Persons = Persons;

            serializer.Serialize(writer, pt);
            writer.Close();

反序列化:
            string filename = “test.xml”;
            using (System.IO.StreamReader reader = new System.IO.StreamReader(filename ))
            {
                System.Xml.Serialization.XmlSerializer xs = new        System.Xml.Serialization.XmlSerializer(typeof(Part));

               //处理未知节点
                xs.UnknownNode += new XmlNodeEventHandler(xs_UnknownNode);

               //处理未知属性
                xs.UnknownAttribute += new XmlAttributeEventHandler(xs_UnknownAttribute);
                Part part = xs.Deserialize(reader) as Part;
                reader.Close();
                for (int i = 0; i < part.Persons.Count(); i++ )
                {
                    Person person = part.Persons[i] as Person;
                    richTextBox1.Text += "Name:" + person.Name + "/n" +
                                       "Age: " + person.Age + "/n" +
                                       "Sex: " + person.Sex + "/n";
                }
            }

事件处理:

        void xs_UnknownAttribute(object sender, XmlAttributeEventArgs e)
        {
            System.Xml.XmlAttribute attr = e.Attr;
            richTextBox1.Text += "Unknown attribute " + attr.Name + "='" + attr.Value + "'";
        }

        void xs_UnknownNode(object sender, XmlNodeEventArgs e)
        {
            richTextBox1.Text += "Unknown Node:" + e.Name + "/t" + e.Text;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值