XML序列化和反序列化

来源:互联网 发布:怎么看淘宝客 编辑:程序博客网 时间:2024/04/26 03:50

序列化一些复杂的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;
        }

原创粉丝点击