zoukankan      html  css  js  c++  java
  • xml 序列化和反序列化 西安

    xml 格式如下:

    <?xml version="1.0" encoding="utf-8" ?>
    <Persons>
        <Person Name="张三" Sex="男" Age="18" Height ="180" ></Person>
        <Person Name="李四" Sex="男" Age="21" Height ="170" ></Person>
        <Person Name="王五" Sex="女" Age="12" Height ="120" ></Person>
        <Person Name="赵六" Sex="男" Age="58" Height ="160" >
            <Children>
                <Child Name="孩子一" Sex="2"></Child>
                <Child Name="孩子二" Sex="5"></Child>
            </Children>
        </Person>
    </Persons>

    为了方便起见,以下略去读取xml文件以及写入生产xml文件,直接将以上xml文件写在cs文件中。

    namespace XML序列化
    {
    
        class MyXmlOptions
        {
            public Persons per { get; set; }
            public string xmlString { get; set; }
            public MyXmlOptions()
            {
                //读取本地 xml 文件内容
                xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"
        + "<Persons>"
        + "    <Person Name=\"张三\" Sex=\"男\" Age=\"18\" Height =\"180\" ></Person> "
        + "    <Person Name=\"李四\" Sex=\"男\" Age=\"21\" Height =\"170\" ></Person> "
        + "    <Person Name=\"王五\" Sex=\"女\" Age=\"12\" Height =\"120\" ></Person> "
        + "    <Person Name=\"赵六\" Sex=\"男\" Age=\"58\" Height =\"160\" > "
        + "        <Children>"
        + "            <Child Name=\"孩子一\" Sex=\"2\"></Child>"
        + "            <Child Name=\"孩子二\" Sex=\"5\"></Child>"
        + "        </Children>"
        + "    </Person>"
        + "</Persons>";
    
            }
    
            public string XmlDeserialize()
            {
                if (per != null)
                {
                    StringBuilder sb = new StringBuilder(5000);
                    XmlSerializer ser = new XmlSerializer(typeof(Persons));
                    using (TextWriter writer = new StringWriter(sb))
                    {
                        ser.Serialize(writer, per);
                        return writer.ToString();
                    }
                }
                else
                {
                    return "实体对象不存在,饭序列化失败";
                }
            }
            public void XmlSerialize()
            {
                XmlSerializer ser = new XmlSerializer(typeof(Persons));
                using (TextReader reader = new StringReader(xmlString))
                {
                    per = (Persons)ser.Deserialize(reader);
                }
            }
        }
    }

    客户端代码如下:

     static void Main(string[] args)
            {
                MyXmlOptions option = new MyXmlOptions();
                option.XmlSerialize();
                Console.WriteLine(option.xmlString);
                Console.WriteLine(option.XmlDeserialize());
    
                Console.ReadKey();
            }

     为了使 xml 能够序列化为 实体对象,并且可以反序列化,Poersons 实体 根据xml结构设置如下:

    namespace XML序列化
    {
        [XmlRoot("Persons", IsNullable = false)]
        public class Persons
        {
            [XmlElement("Person")]
            public List<Person> Person;
        }
        public class Person
        {
            [XmlAttribute("Name")]
            public string Name { get; set; }
            [XmlAttribute("Sex")]
            public string Sex { get; set; }
            [XmlAttribute("Age")]
            public string Age { get; set; }
            [XmlAttribute("Height")]
            public string Height { get; set; }
            [XmlElement("Children")]
            public Children Children;
        }
        public class Children
        {
            [XmlElement("Child")]
            public List<Child> Child;
        }
        public class Child
        {
            [XmlAttribute("Name")]
            public string Name { get; set; }
            [XmlAttribute("Sex")]
            public string Sex { get; set; }
        }
    }
  • 相关阅读:
    Windows Azure Cloud Service (14) 使用Windows Azure诊断收集日志记录数据
    Windows Azure Cloud Service (13) 用Visual Studio 2010 将应用程序部署到Windows Azure平台
    Windows Azure Cloud Service (15) 多个VM Instance场景下如何处理ASP.NET Session
    Windows Azure Storage (5) Windows Azure Drive
    Windows Azure Storage (7) 使用工具管理Windows Azure Storage
    SQL Azure(二) SQL Azure vs SQL Server
    webbrowser的自动提交
    提取视频的背景声音的软件
    Listview列排序的bug原因
    两个奇怪的问题
  • 原文地址:https://www.cnblogs.com/zhouzhaokun/p/3016512.html
Copyright © 2011-2022 走看看