示例#1
0
        public static string ToXml(this object obj, XmlWriterSettings xws)
        {
            if (obj == null)
            {
                return(null);
            }

            StringBuilder xmlString = new StringBuilder();

            using (XmlWriter xtw = XmlTextWriter.Create(xmlString, xws ?? new XmlWriterSettings()))
            {
                ChoNullNSXmlSerializer serializer = new ChoNullNSXmlSerializer(obj.GetType());
                serializer.Serialize(xtw, obj);

                xtw.Flush();

                return(xmlString.ToString());
            }

            //using (MemoryStream ms = new MemoryStream())
            //{
            //    XmlSerializer serializer = new XmlSerializer(obj.GetType());
            //    serializer.Serialize(ms, obj);
            //    ms.Seek(0, SeekOrigin.Begin);
            //    using (StreamReader sr = new StreamReader(ms))
            //    {
            //        // return the formatted string to caller
            //        return sr.ReadToEnd();
            //    }
            //}
        }
 public void WriteXml(System.Xml.XmlWriter writer)
 {
     try
     {
         if (Count > 0)
         {
             if (_isMixedCollection)
             {
                 writer.WriteAttributeString("type", "MixedCollection");
                 for (int index = 0; index < Count; index++)
                 {
                     writer.WriteStartElement("Item");
                     writer.WriteAttributeString("type", this[index].GetType().AssemblyQualifiedName);
                     ChoNullNSXmlSerializer xmlSerializer = new ChoNullNSXmlSerializer(this[index].GetType());
                     xmlSerializer.Serialize(writer, this[index]);
                     writer.WriteEndElement();
                 }
             }
             else
             {
                 writer.WriteAttributeString("type", this[0].GetType().AssemblyQualifiedName);
                 ChoNullNSXmlSerializer xmlSerializer = new ChoNullNSXmlSerializer(this[0].GetType());
                 for (int index = 0; index < Count; index++)
                 {
                     xmlSerializer.Serialize(writer, this[index]);
                 }
             }
         }
     }
     catch (Exception)
     {
         //ChoStreamProfile.WriteLine(ChoReservedFileName.SerializationIssues.ToString(), ChoApplicationException.ToString(ex));
         throw;
     }
 }
示例#3
0
        public static object XmlDeserialize(string path, Type type, string xmlString, XmlReaderSettings xrs = null)
        {
            ChoGuard.ArgumentNotNullOrEmpty(path, "Path");

            using (StreamReader sr = new StreamReader(path))
            {
                using (XmlReader xtw = XmlTextReader.Create(sr, xrs ?? new XmlReaderSettings()))
                {
                    ChoNullNSXmlSerializer serializer = new ChoNullNSXmlSerializer(type);
                    return(serializer.Deserialize(xtw));
                }
            }
        }
示例#4
0
        public static string XmlSerialize(object target, XmlWriterSettings xws = null)
        {
            ChoGuard.ArgumentNotNull(target, "Target");

            StringBuilder xmlString = new StringBuilder();

            using (XmlWriter xtw = XmlTextWriter.Create(xmlString, xws ?? new XmlWriterSettings()))
            {
                ChoNullNSXmlSerializer serializer = new ChoNullNSXmlSerializer(target.GetType());
                serializer.Serialize(xtw, target);

                xtw.Flush();

                return(xmlString.ToString());
            }
        }
示例#5
0
        public static string ToNullNSXml(this object obj, XmlWriterSettings xws, XmlAttributeOverrides xmlAttributeOverrides = null)
        {
            if (obj == null)
            {
                return(null);
            }

            StringBuilder xmlString = new StringBuilder();

            using (XmlWriter xtw = XmlTextWriter.Create(xmlString, xws ?? _xws))
            {
                ChoNullNSXmlSerializer serializer = xmlAttributeOverrides != null ? new ChoNullNSXmlSerializer(obj.GetType(), xmlAttributeOverrides) : new ChoNullNSXmlSerializer(obj.GetType());
                serializer.Serialize(xtw, obj);

                xtw.Flush();

                return(xmlString.ToString());
            }
        }
        public virtual void WriteXml(XmlWriter writer)
        {
            writer.WriteStartElement(DefaultName);

            object value = null;

            foreach (string key in this.Keys)
            {
                if (key == "Value")
                {
                    value = this[key];
                }
                else if (key == DefaultName)
                {
                    ((ChoDynamicObject)this[key]).WriteXml(writer);
                }
                else
                {
                    writer.WriteAttributeString(key, this[key].ToNString());
                }
            }
            if (value != null)
            {
                if (value is ChoDynamicObject)
                {
                    ((ChoDynamicObject)value).WriteXml(writer);
                }
                else
                {
                    if (value.GetType().IsSimple())
                    {
                        writer.WriteString(value.ToNString());
                    }
                    else
                    {
                        ChoNullNSXmlSerializer valueSerializer = new ChoNullNSXmlSerializer(value.GetType());
                        valueSerializer.Serialize(writer, value);
                    }
                }
            }
            writer.WriteEndElement();
        }
示例#7
0
        public static string ToNullNSXmlWithType(this object obj, ChoTypeNameSpecifier?typeNameSpecifier = null, XmlWriterSettings xws = null, XmlAttributeOverrides xmlAttributeOverrides = null)
        {
            if (obj == null)
            {
                return(null);
            }

            StringBuilder xmlString = new StringBuilder();

            using (XmlWriter xtw = XmlTextWriter.Create(xmlString, xws ?? _xws))
            {
                ChoNullNSXmlSerializer serializer = xmlAttributeOverrides != null ? new ChoNullNSXmlSerializer(obj.GetType(), xmlAttributeOverrides) : new ChoNullNSXmlSerializer(obj.GetType());
                serializer.Serialize(xtw, obj);

                xtw.Flush();
            }

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(xmlString.ToString());
            xmlDoc.DocumentElement.Attributes.Append(xmlDoc.CreateAttribute("_type_")).Value = typeNameSpecifier != null?obj.GetType().GetName(typeNameSpecifier.Value) : obj.GetTypeName();

            return(xmlDoc.InnerXml);
        }