zoukankan      html  css  js  c++  java
  • C#对象序列化成XML,以及自定义标签名

    C#对象序列化操作:

    public class XMLHelper
    {
        /// <summary>
        /// 对象序列化成 XML String
        /// </summary>
        public static string XmlSerialize<T>(T obj)
        {
            string xmlString = string.Empty;
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
            //using (TextWriter textWriter = new StreamWriter("D:\xmlTest.xml"))
            //{
            //    xmlSerializer.Serialize(textWriter, obj);
            //}
            using (MemoryStream ms = new MemoryStream())
            {
                xmlSerializer.Serialize(ms, obj);
                xmlString = Encoding.UTF8.GetString(ms.ToArray());
            }
            return xmlString;
        }
    
        /// <summary>
        /// XML String 反序列化成对象
        /// </summary>
        public static T XmlDeserialize<T>(string xmlString)
        {
            T t = default(T);
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
            using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString)))
            {
                using (XmlReader xmlReader = XmlReader.Create(xmlStream))
                {
                    Object obj = xmlSerializer.Deserialize(xmlReader);
                    t = (T)obj;
                }
            }
            return t;
        }
    
    }

    示例:

    [Serializable]
    [XmlType(TypeName = "MySong")]
    public class Song
    {
        [XmlElement("A")]
        public string Artist;
        [XmlElement("S")]
        public string SongTitle;
    }
    
    class XMLDemo
    {
        static void Main(string[] args)
        {
            List<Song> list = new List<Song>()
            {
                new Song(){ SongTitle="歌曲标题1",Artist="歌手1"},
                new Song(){ SongTitle="歌曲标题2",Artist="歌手2"},
                new Song(){ SongTitle="歌曲标题3",Artist="歌手3"}
            };
            string xmlString = XMLHelper.XmlSerialize(list);
            /*<?xml version="1.0"?>
            <ArrayOfSong xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
              <Song>
                <Artist>歌手1</Artist>
                <SongTitle>歌曲标题1</SongTitle>
              </Song>
              <Song>
                <Artist>歌手2</Artist>
                <SongTitle>歌曲标题2</SongTitle>
              </Song>
              <Song>
                <Artist>歌手3</Artist>
                <SongTitle>歌曲标题3</SongTitle>
              </Song>
            </ArrayOfSong>
             
            // 自定义标签名
            <?xml version="1.0"?>
            <ArrayOfMySong xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
              <MySong>
                <A>歌手1</A>
                <S>歌曲标题1</S>
              </MySong>
              <MySong>
                <A>歌手2</A>
                <S>歌曲标题2</S>
              </MySong>
              <MySong>
                <A>歌手3</A>
                <S>歌曲标题3</S>
              </MySong>
            </ArrayOfMySong>
            */
            Console.WriteLine(xmlString);
        }
    }
  • 相关阅读:
    my97date与struts2的结合使用
    window.frames["detailFrm"].isSubmitting = true;//?起什么作用
    apache ant
    JodaTime 简介
    dbgrid中没有数据原因1
    网页 BODY的topMargin 和leftMargin
    在java类中定义log
    discuz论坛移动后,如果不能连接上数据库。可能是连接数据库的用户密码不正确。
    在后台对字符串进行转码
    [转] 我们的企业比日本少了什么
  • 原文地址:https://www.cnblogs.com/lusunqing/p/3968114.html
Copyright © 2011-2022 走看看