• .NET 序列化成XML, 并且格式化


    现有Person类:

        [Serializable]
        public class Person
        {
            public string Name;
            public string Info;
    
            public Person(string name)
            {
                Name = name;
            }
    
            [OnSerializing]
            public void BeforeSerialize(StreamingContext context)
            {
                Info = "Welcome, " + Name;
            }
        }

    直接用DataContractSerializer 序列化到文件后, 结果如:

    <?xml version="1.0" encoding="utf-16"?><ArrayOfPerson xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MyNamespace"><Person><Info>Welcome, Jeff</Info><Name>Jeff</Name></Person><Person><Info>Welcome, Frank</Info><Name>Frank</Name></Person></ArrayOfPerson>

    要让序列化后的XML更可读, 可以借助于XDocument , 测试代码:

            public void TestSerialize()
            {
                var persons = new List<Person>()
                {
                    new Person("Jeff"),
                    new Person("Frank")
                };
                string file = "out.xml";
                var dcs = new DataContractSerializer(typeof(List<Person>));
    
                // Serialize
                var sb = new StringBuilder();
                var xw = XmlWriter.Create(sb);
                dcs.WriteObject(xw, persons);
                xw.Close();
    
                var sw = new StreamWriter(file, false, Encoding.Unicode);
                var doc = XDocument.Parse(sb.ToString());
                //sw.Write(sb.ToString());
                sw.Write(doc.ToString());
                sw.Close();
    
                // Deserialize
                var xr = XmlReader.Create(file);
                var ps = (List<Person>)dcs.ReadObject(xr);
                Console.WriteLine(ps[1].Info);
            }

    结果:

    <ArrayOfPerson xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MyNamespace">
      <Person>
        <Info>Welcome, Jeff</Info>
        <Name>Jeff</Name>
      </Person>
      <Person>
        <Info>Welcome, Frank</Info>
        <Name>Frank</Name>
      </Person>
    </ArrayOfPerson>
  • 相关阅读:
    第二季-专题11-世界一下变大了-MMU
    第二季-专题10-C语言环境初始化
    第二季-专题9--代码搬移不可少
    第二季-专题8-不用内存怎么行
    第二季-专题6-点亮指路灯
    第二季-专题7-ARM跑快了---时钟初始化
    第二季-专题5-核心初始化
    第二季-专题4-我是bootloader设计师
    消除苹果系统对边框的优化
    css3
  • 原文地址:https://www.cnblogs.com/Freeway/p/5001130.html
Copyright © 2020-2023  润新知