Ejemplo n.º 1
0
        /// <summary>数据流转为Xml实体对象</summary>
        /// <param name="stream">数据流</param>
        /// <param name="type">实体类型</param>
        /// <param name="encoding">编码</param>
        /// <returns>Xml实体对象</returns>
        public static Object ToXmlEntity(this Stream stream, Type type, Encoding encoding = null)
        {
            if (stream == null)
            {
                throw new ArgumentNullException("stream");
            }
            if (type == null)
            {
                throw new ArgumentNullException("type");
            }
            if (encoding == null)
            {
                encoding = Encoding.UTF8;
            }

            var x = new Ding.Serialization.Xml
            {
                Stream   = stream,
                Encoding = encoding
            };

            return(x.Read(type));

            //if (!type.IsPublic) throw new XException("类型{0}不是public,不能进行Xml序列化!", type.FullName);

            //var serial = new XmlSerializer(type);
            //using (var reader = new StreamReader(stream, encoding))
            //using (var xr = new XmlTextReader(reader))
            //{
            //    // 必须关闭Normalization,否则字符串的\r\n会变为\n
            //    //xr.Normalization = true;
            //    return serial.Deserialize(xr);
            //}
        }
Ejemplo n.º 2
0
        /// <summary>字符串转为Xml实体对象</summary>
        /// <param name="xml">Xml字符串</param>
        /// <param name="type">实体类型</param>
        /// <returns>Xml实体对象</returns>
        public static Object ToXmlEntity(this String xml, Type type)
        {
            if (xml.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException("xml");
            }
            if (type == null)
            {
                throw new ArgumentNullException("type");
            }

            var x = new Ding.Serialization.Xml
            {
                Stream = new MemoryStream(xml.GetBytes())
            };

            return(x.Read(type));

            //if (!type.IsPublic) throw new XException("类型{0}不是public,不能进行Xml序列化!", type.FullName);

            //var serial = new XmlSerializer(type);
            //using (var reader = new StringReader(xml))
            //using (var xr = new XmlTextReader(reader))
            //{
            //    // 必须关闭Normalization,否则字符串的\r\n会变为\n
            //    //xr.Normalization = true;
            //    return serial.Deserialize(xr);
            //}
        }
Ejemplo n.º 3
0
        private String GetXml()
        {
            var xml = new Ding.Serialization.Xml
            {
                Encoding     = Encoding.UTF8,
                UseAttribute = false,
                UseComment   = true
            };

            if (_.Debug)
            {
                xml.Log = XTrace.Log;
            }

            xml.Write(this);

            return(xml.GetString());
        }
Ejemplo n.º 4
0
        /// <summary>序列化为Xml数据流</summary>
        /// <param name="obj">要序列化为Xml的对象</param>
        /// <param name="stream">目标数据流</param>
        /// <param name="encoding">编码</param>
        /// <param name="attachComment">是否附加注释,附加成员的Description和DisplayName注释</param>
        /// <param name="useAttribute">是否使用特性输出</param>
        public static void ToXml(this Object obj, Stream stream, Encoding encoding = null, Boolean attachComment = false, Boolean useAttribute = false)
        {
            if (obj == null)
            {
                return;
            }
            if (encoding == null)
            {
                encoding = Encoding.UTF8;
            }
            // 删除字节序
            //encoding = encoding.TrimPreamble();

            var xml = new Ding.Serialization.Xml
            {
                Stream       = stream,
                Encoding     = encoding,
                UseAttribute = useAttribute,
                UseComment   = attachComment
            };

            xml.Write(obj);
        }