示例#1
0
        protected virtual void doWriteXml(XmlWriter writer)
        {
            writer.WriteAttributeString("assembly", CurrentAssemblyName);
            writer.WriteAttributeString("Orientation", this.Orientation.ToString());
            writer.WriteAttributeString("Position", this.Position.ToString());
            writer.WriteAttributeString("MaxPosition", this.MaxPosition.ToString());
            writer.WriteAttributeString("MinPosition", this.MinPosition.ToString());
            writer.WriteAttributeString("Expand", this.Expand.ToString());

            writer.WriteStartElement("item");
            IXmlSerializable xmlitm = Widget1 as IXmlSerializable;

            if (xmlitm != null)
            {
                xmlitm.WriteXml(writer);
            }
            writer.WriteEndElement();

            writer.WriteStartElement("childbox");
            if (container2 != null)
            {
                container2.WriteXml(writer);
            }
            writer.WriteEndElement();
        }
示例#2
0
        public static string Serialize(object obj)
        {
            TextWriter tw = new StringWriter();

            try
            {
                Type             objType         = obj.GetType();
                IXmlSerializable serializableObj = obj as IXmlSerializable;

                if (serializableObj != null)
                {
                    using (XmlWriter writer = XmlWriter.Create(tw))
                    {
                        writer.WriteStartDocument();
                        writer.WriteStartElement(objType.Name);
                        serializableObj.WriteXml(writer);
                        writer.WriteEndElement();
                        writer.WriteEndDocument();
                    }
                }
                else
                {
                    XmlSerializer serializer = new XmlSerializer(objType);
                    serializer.Serialize(tw, obj);
                }
            }
            catch (Exception e)
            {
                MobileDebug.Service.WriteEvent("XmlSerializeFail", e);
            }

            return(tw.ToString());
        }
示例#3
0
 public static void ReadElement(XmlReader reader, string localName, IXmlSerializable instance)
 {
     if (reader.IsStartElement(localName))
     {
         instance.ReadXml(reader);
     }
 }
示例#4
0
        public override void SetXmlInstance(object inst, XamlMember property, XData xData)
        {
            IXmlSerializable serializable = this.GetValue(inst, property, true) as IXmlSerializable;

            if (serializable == null)
            {
                throw this.CreateException(System.Xaml.SR.Get("XmlDataNull", new object[] { property.Name }));
            }
            XmlReader xmlReader = xData.XmlReader as XmlReader;

            if (xmlReader == null)
            {
                throw new XamlInternalException(System.Xaml.SR.Get("XmlValueNotReader", new object[] { property.Name }));
            }
            try
            {
                serializable.ReadXml(xmlReader);
            }
            catch (Exception exception)
            {
                if (CriticalExceptions.IsCriticalException(exception))
                {
                    throw;
                }
                throw this.CreateException(System.Xaml.SR.Get("SetXmlInstance", new object[] { property }), exception);
            }
        }
示例#5
0
        public void ReadXml(System.Xml.XmlReader reader)
        {
            if (reader.MoveToAttribute("Disabled"))
            {
                Disabled = reader.Value == "1";
            }

            reader.ReadStartElement("RuleList");
            while (reader.IsStartElement())
            {
                IXmlSerializable r = null;
                switch (reader.Name)
                {
                case "RegExpRule":
                    r = new RegExpRule();
                    break;

                case "HostRule":
                    r = new HostRule();
                    break;

                case "PathRule":
                    r = new PathRule();
                    break;
                }
                if (r != null)
                {
                    r.ReadXml(reader.ReadSubtree());
                    this.Add((IRule)r);
                }
                reader.ReadEndElement();
            }
        }
示例#6
0
        private void DisplayXmlIfSelected(IXmlSerializable exception)
        {
            if (tabsView.SelectedIndex != 2 || _xmlWritten)
            {
                return;
            }

            if (exception == null)
            {
                rtfXml.Text = string.Empty;
            }
            else
            {
                using (var stringWriter = new StringWriter())
                {
                    XmlTextWriter writer = new XmlRichTextWriter(stringWriter)
                    {
                        Formatting  = Formatting.Indented,
                        Indentation = 2
                    };

                    exception.WriteOuterXml(writer);

                    writer.Close();

                    rtfXml.Rtf = stringWriter.ToString();
                }
            }

            _xmlWritten = true;
        }
示例#7
0
 public override void WriteXml(XmlWriter writer)
 {
     base.WriteXml(writer);
     writer.WriteStartElement("Villages");
     writer.WriteAttributeString <int>("Count", this.villages.Count);
     for (int i = 0; i < this.villages.Count; i++)
     {
         if (this.villages[i].HasBeenConverted)
         {
             Diagnostics.Assert(this.villages[i].HasBeenConvertedBy != null);
             Diagnostics.Assert(this.villages[i].HasBeenConvertedByIndex != -1);
             Diagnostics.Assert(this.villages[i].HasBeenConvertedByIndex == this.villages[i].HasBeenConvertedBy.Index);
             IXmlSerializable xmlSerializable = null;
             writer.WriteElementSerializable <IXmlSerializable>(ref xmlSerializable);
         }
         else if (this.villages[i].IsInfectionComplete)
         {
             IXmlSerializable xmlSerializable = null;
             writer.WriteElementSerializable <IXmlSerializable>(ref xmlSerializable);
         }
         else
         {
             IXmlSerializable xmlSerializable = this.villages[i];
             writer.WriteElementSerializable <IXmlSerializable>(ref xmlSerializable);
         }
     }
     writer.WriteEndElement();
 }
示例#8
0
    public virtual void WriteXml(XmlWriter writer)
    {
        int num = writer.WriteVersionAttribute(3);

        writer.WriteElementString <int>("OwnerEmpireIndex", this.OwnerEmpireIndex);
        writer.WriteElementString <int>("OtherEmpireIndex", this.OtherEmpireIndex);
        string value = string.Empty;

        if (this.State != null)
        {
            value = this.State.Name;
        }
        writer.WriteElementString <string>("State", value);
        writer.WriteElementString <int>("TurnAtTheBeginningOfTheState", this.TurnAtTheBeginningOfTheState);
        writer.WriteStartElement("DiplomaticAbilities");
        Diagnostics.Assert(this.diplomaticAbilities != null);
        writer.WriteAttributeString <int>("Count", this.diplomaticAbilities.Count);
        for (int i = 0; i < this.diplomaticAbilities.Count; i++)
        {
            Diagnostics.Assert(this.diplomaticAbilities[i] != null);
            IXmlSerializable xmlSerializable = this.diplomaticAbilities[i];
            writer.WriteElementSerializable <IXmlSerializable>(ref xmlSerializable);
        }
        writer.WriteEndElement();
        if (num >= 2)
        {
            IXmlSerializable xmlSerializable2 = this.score;
            writer.WriteElementSerializable <IXmlSerializable>(ref xmlSerializable2);
        }
    }
        private static void WriteIXmlSerializable(XmlWriterDelegator xmlWriter, object obj, XmlSerializableWriter xmlSerializableWriter)
        {
            xmlSerializableWriter.BeginWrite(xmlWriter.Writer, obj);
            IXmlSerializable serializable = obj as IXmlSerializable;

            if (serializable != null)
            {
                serializable.WriteXml(xmlSerializableWriter);
            }
            else
            {
                XmlElement element = obj as XmlElement;
                if (element != null)
                {
                    element.WriteTo(xmlSerializableWriter);
                }
                else
                {
                    System.Xml.XmlNode[] nodeArray = obj as System.Xml.XmlNode[];
                    if (nodeArray == null)
                    {
                        throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.Runtime.Serialization.SR.GetString("UnknownXmlType", new object[] { DataContract.GetClrTypeFullName(obj.GetType()) })));
                    }
                    foreach (System.Xml.XmlNode node in nodeArray)
                    {
                        node.WriteTo(xmlSerializableWriter);
                    }
                }
            }
            xmlSerializableWriter.EndWrite();
        }
示例#10
0
 /// <summary>Transforms the specified type into a string that is fit to be traced.</summary>
 /// <param name="xml">The type to transform.</param>
 /// <returns>The string.</returns>
 internal protected static string ToTraceString(IXmlSerializable xml)
 {
     var sb=new StringBuilder();
     using (var xw=XmlWriter.Create(sb))
         xml.WriteXml(xw);
     return sb.ToString();
 }
示例#11
0
                /// <summary>
                /// Deserialize xml file to object.
                /// </summary>
                /// <param name="obj">The object implements IXmlSerializable.</param>
                /// <param name="fileName">The name of file used to stored object.</param>
                public static void Deserialize(IXmlSerializable obj, string fileName)
               
        {
                        if (!File.Exists(fileName))
            {
                return;
            }
                        FileStream fs     = null;
                        XmlReader  reader = null;
                        try {
                                fs     = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);
                                reader = new XmlTextReader(fs);
                                obj.ReadXml(reader);

                           
            }
                        catch  {
                           
            }
                        finally {
                                //Throw
                                if (fs != null)
                {
                    fs.Close();
                }
                           
            }
                   
        }
示例#12
0
                /// <summary>
                /// Serialize object to file.
                /// </summary>
                /// <param name="obj">The object implements IXmlSerializable.</param>
                /// <param name="fileName">The name of file used to stored object.</param>
                public static void Serialize(IXmlSerializable obj, string fileName)
               
        {
                        FileStream fs    = null;
                        XmlWriter  write = null;
                        try {
                                fs    = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
                                write = new XmlTextWriter(fs, Encoding.Default);
                                obj.WriteXml(write);

                           
            }
                        catch {
                                throw;
                               
            }
                        finally {
                                if (fs != null)
                {
                    fs.Close();
                }
                           
            }
                   
        }
示例#13
0
        private string ToSerializable(IXmlSerializable serializable)
        {
            if (serializable == null)
            {
                return(null);
            }

            try
            {
                using (var memory = new MemoryStream())
                    using (var writer = XmlWriter.Create(memory))
                    {
                        writer.WriteStartDocument();
                        serializable.WriteXml(writer);
                        writer.WriteEndDocument();
                        writer.Flush();

                        memory.Seek(0L, SeekOrigin.Begin);
                        return(Encoding.UTF8.GetString(memory.GetBuffer(), 0, (int)memory.Length));
                    }
            }
            catch (Exception e)
            {
                Log.ErrorException(e, "Error serializing object of type {0}", serializable.GetType().FullName);
                return(null);
            }
        }
示例#14
0
                /// <summary>
                /// Deserialize xml string to object.
                /// </summary>
                /// <param name="data">Deserialized string</param>
                /// <param name="obj">The object implements IXmlSerializable.</param>
                public static void Deserialize(string data, IXmlSerializable obj)
               
        {
                        if (data.Equals(string.Empty))
            {
                return;
            }
                        XmlReader    reader = null;
                        StringReader sr     = null;
                        try {
                                sr     = new StringReader(data);
                                reader = new XmlTextReader(sr);
                                obj.ReadXml(reader);

                           
            }
                        catch {
                               
                           
            }
                        finally {
                                if (sr != null)
                {
                    sr.Close();
                }
                           
            }
                   
        }
示例#15
0
        public static void Serialize(string filePath, IXmlSerializable obj)
        {
            XmlSerializer serializer = new XmlSerializer(obj.GetType());

            using (StreamWriter writer = new StreamWriter(filePath))
                serializer.Serialize(writer, obj);
        }
    public override void WriteXml(XmlWriter writer)
    {
        int num = writer.WriteVersionAttribute(5);

        writer.WriteAttributeString <int>("EmpireTarget", this.EmpireTarget);
        writer.WriteAttributeString <float>("MilitaryStress", this.Priority);
        writer.WriteAttributeString <int>("ExecutionState", (int)this.ExecutionState);
        if (num >= 2)
        {
            writer.WriteAttributeString <int>("ForceSourceRegion", this.ForceSourceRegion);
            writer.WriteAttributeString <float>("MinimumNeededArmyFulfillement", this.MinimumNeededArmyFulfillement);
            writer.WriteAttributeString <float>("CurrentFulfillement", this.CurrentFulfillement);
            writer.WriteAttributeString <float>("MissingMilitaryPower", this.MissingMilitaryPower);
            writer.WriteAttributeString <bool>("OnlyMercenaries", this.OnlyMercenaries);
            if (num >= 5)
            {
                writer.WriteAttributeString <AICommanderMissionDefinition.AICommanderCategory>("CommanderCategoryEnum", this.CommanderCategory);
            }
        }
        base.WriteXml(writer);
        if (this.ArmyPattern != null)
        {
            IXmlSerializable armyPattern = this.ArmyPattern;
            writer.WriteElementSerializable <IXmlSerializable>(ref armyPattern);
        }
        IXmlSerializable xmlSerializable = this.FinalPosition;

        writer.WriteElementSerializable <IXmlSerializable>("FinalPosition", ref xmlSerializable);
    }
示例#17
0
        // SetXmlInstance: receives the value as "object" so the calling code doesn't
        // need to load System.Xml.dll types to make the call.
        public override void SetXmlInstance(object inst, XamlMember property, XAML3.XData xData)
        {
            object           propInstance = GetValue(inst, property, true);
            IXmlSerializable iXmlSerial   = propInstance as IXmlSerializable;

            if (iXmlSerial == null)
            {
                throw CreateException((SR.Get(SRID.XmlDataNull, property.Name)));
            }

            XmlReader reader = xData.XmlReader as XmlReader;

            if (reader == null)
            {
                throw new XamlInternalException(SR.Get(SRID.XmlValueNotReader, property.Name));
            }
            try
            {
                iXmlSerial.ReadXml(reader);
            }
            catch (Exception e)
            {
                if (CriticalExceptions.IsCriticalException(e))
                {
                    throw;
                }
                throw CreateException(SR.Get(SRID.SetXmlInstance, property), e);
            }
        }
        internal static object ReadIXmlSerializable(XmlSerializableReader xmlSerializableReader, XmlReaderDelegator xmlReader, XmlDataContract xmlDataContract, bool isMemberType)
        {
            object obj = null;

            xmlSerializableReader.BeginRead(xmlReader);
            if (isMemberType && !xmlDataContract.HasRoot)
            {
                xmlReader.Read();
                xmlReader.MoveToContent();
            }
            if (xmlDataContract.UnderlyingType == Globals.TypeOfXmlElement)
            {
                if (!xmlReader.IsStartElement())
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(CreateUnexpectedStateException(XmlNodeType.Element, xmlReader));
                }
                XmlDocument xmlDoc = new XmlDocument();
                obj = (XmlElement)xmlDoc.ReadNode(xmlSerializableReader);
            }
            else if (xmlDataContract.UnderlyingType == Globals.TypeOfXmlNodeArray)
            {
                obj = XmlSerializableServices.ReadNodes(xmlSerializableReader);
            }
            else
            {
                IXmlSerializable xmlSerializable = xmlDataContract.CreateXmlSerializableDelegate();
                xmlSerializable.ReadXml(xmlSerializableReader);
                obj = xmlSerializable;
            }
            xmlSerializableReader.EndRead();
            return(obj);
        }
示例#19
0
        public void ReadXml(XmlReader reader)
        {
            _dialect = reader.GetAttribute(DialectAttribute);
            Type type = FilterMapExtension.GetDialectType(_dialect);

            if (type == null)
            {
                throw CreateNotSupportedDialectException();
            }
            if (type == typeof(void))
            {
                return;
            }
            if (typeof(IXmlSerializable).IsAssignableFrom(type))
            {
                IXmlSerializable serializable = (IXmlSerializable)Activator.CreateInstance(type);
                serializable.ReadXml(reader);
                return;
            }
            XmlSerializer serializer = new XmlSerializer(type);

            if (!reader.IsEmptyElement)
            {
                reader.ReadStartElement("Filter", reader.NamespaceURI);
                _value = serializer.Deserialize(reader);
                reader.ReadEndElement();
            }
        }
        public static bool GetCollectionValue <T>(XmlNode xml, string xpath, IXmlSerializable obj, out IList <T> objList)
        {
            XmlNodeList nodes = GetNodes(xml, xpath);

            if (nodes != null)
            {
                objList = new List <T>();
                foreach (XmlNode node in nodes)
                {
                    try
                    {
                        object obj2;
                        if (GetSerializedObject(node, obj, out obj2))
                        {
                            objList.Add((T)obj2);
                        }
                        continue;
                    }
                    catch (Exception)
                    {
                        continue;
                    }
                }
                return(objList.Count > 0);
            }
            objList = null;
            return(false);
        }
示例#21
0
    public virtual void WriteXml(XmlWriter writer)
    {
        writer.WriteStartElement("Helpers");
        writer.WriteAttributeString <int>("Count", this.aiHelpers.Count);
        foreach (KeyValuePair <Type, AIHelper> keyValuePair in this.aiHelpers)
        {
            IXmlSerializable value = keyValuePair.Value;
            writer.WriteElementSerializable <IXmlSerializable>(ref value);
        }
        writer.WriteEndElement();
        writer.WriteStartElement("AIPlayer_MajorEmpires");
        writer.WriteAttributeString <int>("Count", this.aiPlayerMajorEmpires.Count);
        for (int i = 0; i < this.aiPlayerMajorEmpires.Count; i++)
        {
            IXmlSerializable xmlSerializable = this.aiPlayerMajorEmpires[i];
            writer.WriteElementSerializable <IXmlSerializable>(ref xmlSerializable);
        }
        writer.WriteEndElement();
        IXmlSerializable xmlSerializable2 = this.aiPlayerMinorEmpire;

        writer.WriteElementSerializable <IXmlSerializable>(ref xmlSerializable2);
        IXmlSerializable xmlSerializable3 = this.aiPlayerLesserEmpire;

        writer.WriteElementSerializable <IXmlSerializable>(ref xmlSerializable3);
        IXmlSerializable xmlSerializable4 = this.aiPlayerNavalEmpire;

        writer.WriteElementSerializable <IXmlSerializable>("AIPlayer_NavalEmpire", ref xmlSerializable4);
    }
        public static bool SetInnerXml(ref XmlNode xml, string localElementName, IXmlSerializable obj)
        {
            if ((xml == null) || (obj == null))
            {
                return(false);
            }
            StringBuilder     output   = new StringBuilder();
            XmlWriterSettings settings = new XmlWriterSettings();

            settings.ConformanceLevel = ConformanceLevel.Fragment;
            XmlWriter writer = XmlWriter.Create(output, settings);

            if (!TypeHelper.IsNullOrEmpty(localElementName))
            {
                writer.WriteStartElement(localElementName);
            }
            obj.WriteXml(writer);
            if (!TypeHelper.IsNullOrEmpty(localElementName))
            {
                writer.WriteEndElement();
            }
            writer.Close();
            xml.InnerXml = output.ToString();
            return(true);
        }
        private static void WriteIXmlSerializable(XmlWriterDelegator xmlWriter, object obj, XmlSerializableWriter xmlSerializableWriter)
        {
            xmlSerializableWriter.BeginWrite(xmlWriter.Writer, obj);
            IXmlSerializable xmlSerializable = obj as IXmlSerializable;

            if (xmlSerializable != null)
            {
                xmlSerializable.WriteXml(xmlSerializableWriter);
            }
            else
            {
                XmlElement xmlElement = obj as XmlElement;
                if (xmlElement != null)
                {
                    xmlElement.WriteTo(xmlSerializableWriter);
                }
                else
                {
                    XmlNode[] xmlNodes = obj as XmlNode[];
                    if (xmlNodes != null)
                    {
                        foreach (XmlNode xmlNode in xmlNodes)
                        {
                            xmlNode.WriteTo(xmlSerializableWriter);
                        }
                    }
                    else
                    {
                        throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(SR.Format(SR.UnknownXmlType, DataContract.GetClrTypeFullName(obj.GetType()))));
                    }
                }
            }
            xmlSerializableWriter.EndWrite();
        }
 public static bool GetSerializedObject(string xml, IXmlSerializable obj, out object result)
 {
     if ((xml != null) && (xml != string.Empty))
     {
         bool flag;
         try
         {
             if (!xml.TrimStart().StartsWith("<?xml"))
             {
                 xml = "<?xml version=\"1.0\" encoding=\"utf-16\" ?>" + xml;
             }
             result = Serializer.ConvertToObject(xml, obj.GetType());
             if (result == null)
             {
                 return(false);
             }
             flag = true;
         }
         catch
         {
             result = null;
             flag   = false;
         }
         return(flag);
     }
     else
     {
         result = null;
         return(false);
     }
 }
示例#25
0
        public void WriteXmlTest()
        {
            var recentFileList            = new RecentFileList();
            IXmlSerializable serializable = recentFileList;

            serializable.WriteXml(null);
        }
示例#26
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var parameters = new NameValueCollection();

            parameters["service"] = "CSW";
            parameters["version"] = "2.0.2";
            parameters["request"] = "GetCapabilities";

            try
            {
                var sb = new StringBuilder();
                using (var xw = XmlWriter.Create(sb))
                {
                    IXmlSerializable response = Services.Ows.ServiceLocatorInstance.InvokeServiceAsync(parameters, CancellationToken.None).Result;
                    response.WriteXml(xw);
                }
                _Label1.Text = HttpUtility.HtmlEncode(sb.ToString());
            } catch (Exception ex)
            {
                _Label1.Text =
                    ex.Message +
                    "<br />" +
                    ex.StackTrace
                ;
                if (ex.InnerException != null)
                {
                    _Label1.Text +=
                        "<br />" +
                        ex.InnerException.Message +
                        "<br />" +
                        ex.InnerException.StackTrace
                    ;
                }
            }
        }
示例#27
0
        /// <summary>写入实现了可序列化接口的对象</summary>
        /// <param name="value">要写入的对象</param>
        /// <param name="type">要写入的对象类型,如果type等于DataTable,需设置DataTable的名称</param>
        /// <param name="callback">处理成员的方法</param>
        /// <returns>是否写入成功</returns>
        public override bool WriteSerializable(object value, Type type, WriteObjectCallback callback)
        {
            if (!typeof(IXmlSerializable).IsAssignableFrom(type))
            {
                return(base.WriteSerializable(value, type, callback));
            }

            try
            {
                IXmlSerializable xml = value as IXmlSerializable;
                // 这里必须额外写一对标记,否则读取的时候只能读取得到模式而得不到数据
                Boolean b = xml.GetSchema() != null;
                if (b)
                {
                    Writer.WriteStartElement("Data");
                }
                xml.WriteXml(Writer);
                if (b)
                {
                    Writer.WriteEndElement();
                }

                return(true);
            }
            catch
            {
                return(base.WriteSerializable(value, type, callback));
            }
        }
示例#28
0
    public void ReadXml(XmlReader reader)
    {
        if (reader.IsEmptyElement)
        {
            reader.Read();
            return;
        }

        reader.ReadStartElement();

        while (reader.NodeType != XmlNodeType.EndElement)
        {
            string key  = reader.LocalName;
            string type = reader.GetAttribute("type");

            SaveValue        saveValue       = SaveValue.Instantiate(type);
            IXmlSerializable xmlSerializable = saveValue as IXmlSerializable;
            if (xmlSerializable != null)
            {
                xmlSerializable.ReadXml(reader);
                _items[key] = saveValue;
            }

            if (reader.EOF)
            {
                throw new IOException("Malformed XML file");
            }
        }

        reader.ReadEndElement();
    }
示例#29
0
        public static IXmlSerializable CreateByTypeAttribute(XmlReader reader)
        {
            reader.ReadStartElement();

            if (!reader.IsStartElement())
            {
                return(null);
            }
            //reader.ReadStartElement();
            // reader.MoveToAttribute("type");
            // if (!reader.ReadAttributeValue()) { }

            string typeString = reader.GetAttribute("type");

            if (typeString == null)
            {
                throw new NullReferenceException();
            }
            else
            {
                Type type = Type.GetType(typeString);

                IXmlSerializable obj = (IXmlSerializable)type.GetConstructor(new Type[0]).Invoke(new object[0]);
                obj.ReadXml(reader);
                if (!reader.IsEmptyElement)
                {
                    reader.ReadEndElement();
                }
                //reader.Skip();
                return(obj);
            }
        }
示例#30
0
    public void ReadXml(XmlReader reader)
    {
        if (reader.IsEmptyElement)
        {
            reader.Read();
            return;
        }

        reader.ReadStartElement();

        while (reader.NodeType != XmlNodeType.EndElement)
        {
            string type = reader.GetAttribute("type");

            SaveValue        saveValue       = SaveValue.Instantiate(type);
            IXmlSerializable xmlSerializable = saveValue as IXmlSerializable;
            if (xmlSerializable != null)
            {
                xmlSerializable.ReadXml(reader);
                _items.Add(saveValue);
            }
        }

        reader.ReadEndElement();
    }
示例#31
0
    public override void WriteXml(XmlWriter writer)
    {
        base.WriteXml(writer);
        IXmlSerializable armyMission = this.ArmyMission;

        writer.WriteElementSerializable <IXmlSerializable>(ref armyMission);
    }
示例#32
0
 private static Message CreateMessage(IXmlSerializable response, MessageVersion version)
 {
     StringBuilder serialized=new StringBuilder();
     using (var xw=XmlWriter.Create(serialized))
         response.WriteXml(xw);
     var xr=XmlReader.Create(new StringReader(serialized.ToString()));
     return Message.CreateMessage(version, "ExecuteResponse", xr);
 }
示例#33
0
        /// <summary>Creates a new instance of the <see cref="XmlSerializableResult" /> class.</summary>
        /// <param name="result">The result to serialize to the response stream output.</param>
        public XmlSerializableResult(IXmlSerializable result)
        {
            Debug.Assert(result!=null);
            if (result==null)
                throw new ArgumentNullException("result");

            _Result=result;
        }
        public SurrogateForIXmlSerializable(IXmlSerializable serializable)
        {
            assemblyQualifiedName = serializable.GetType().AssemblyQualifiedName;

            using(var stream = new MemoryStream())
            {
                var xmlSerializer = new XmlSerializer(serializable.GetType());
                xmlSerializer.Serialize(stream, serializable);
                bytes = stream.ToArray();
            }
        }
 public void Wrap(object obj)
 {
     if (obj == null)
     {
         throw new ArgumentNullException("obj");
     }
     if (!(obj is IXmlSerializable))
     {
         throw new ArgumentException("obj not an IXmlSerializable interface");
     }
     this._content = obj as IXmlSerializable;
 }
        public static string WriteXml(IXmlSerializable target)
        {
            StringBuilder sb = new StringBuilder();
              XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
              xmlWriterSettings.ConformanceLevel = ConformanceLevel.Fragment;
              using (XmlWriter writer = XmlTextWriter.Create(sb, xmlWriterSettings))
              {
            XmlRootAttribute[] xmlRootAttribute = target.GetType().GetCustomAttributes(typeof(XmlRootAttribute), false) as XmlRootAttribute[];
            writer.WriteStartElement(xmlRootAttribute[0].ElementName);
            target.WriteXml(writer);
            writer.WriteEndElement();
              }

              return sb.ToString();
        }
        public ContestResults(string contestGuid, string techniqueName, string techniqueDescription, List<DatasetResultsDTO> results, double score, IXmlSerializable baseData)
        {
            ContestGUID = contestGuid;
            TechniqueName = techniqueName;
            TechniqueDescription = techniqueDescription;
            Results = results;
            Score = score;

            //
            var serializer = TraceLab.Core.Serialization.XmlSerializerFactory.GetSerializer(baseData.GetType(), null);
            using (MemoryStream memorystream = new MemoryStream())
            {
                serializer.Serialize(memorystream, baseData);
                string xmlObject = Encoding.Default.GetString(memorystream.ToArray());
                BaseData = xmlObject;
            }
        }
示例#38
0
        private bool CheckExceptions(IXmlSerializable instance)
        {
            try
            {
                // ReSharper disable ReturnValueOfPureMethodIsNotUsed
                instance.GetSchema();

                // ReSharper restore ReturnValueOfPureMethodIsNotUsed
                throw new UnitTestException(string.Format(CultureInfo.InvariantCulture, Resources.XmlSerialization_GetSchema, Type.Name));
            }
            catch (NotSupportedException)
            {
            }

            try
            {
                // ReSharper disable ReturnValueOfPureMethodIsNotUsed
                instance.ReadXml(null);

                // ReSharper restore ReturnValueOfPureMethodIsNotUsed
                throw new UnitTestException(string.Format(CultureInfo.InvariantCulture, Resources.XmlSerialization_ReadXmlNull, Type.Name));
            }
            catch (ArgumentNullException)
            {
            }

            try
            {
                // ReSharper disable ReturnValueOfPureMethodIsNotUsed
                instance.WriteXml(null);

                // ReSharper restore ReturnValueOfPureMethodIsNotUsed
                throw new UnitTestException(string.Format(CultureInfo.InvariantCulture, Resources.XmlSerialization_WriteXmlNull, Type.Name));
            }
            catch (ArgumentNullException)
            {
            }

            return true;
        }
 /// <include file='doc\XmlSerializationReader.uex' path='docs/doc[@for="XmlSerializationReader.ReadSerializable"]/*' />
 protected IXmlSerializable ReadSerializable(IXmlSerializable serializable) {
     return ReadSerializable(serializable, false);
 }
示例#40
0
        ///////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////BUILD FROM V2 SCHEMA                 //////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////

        /// <summary>
        /// Initializes a new instance of the <see cref="ItemSchemeMapCore"/> class.
        /// </summary>
        /// <param name="createdFrom">
        /// The created from. 
        /// </param>
        /// <param name="structureType">
        /// The structure type. 
        /// </param>
        /// <param name="id">
        /// The id. 
        /// </param>
        /// <param name="uri">
        /// The uri. 
        /// </param>
        /// <param name="name">
        /// The name. 
        /// </param>
        /// <param name="description">
        /// The description. 
        /// </param>
        /// <param name="annotationsType">
        /// The annotations type. 
        /// </param>
        /// <param name="parent">
        /// The parent. 
        /// </param>
        protected ItemSchemeMapCore(
            IXmlSerializable createdFrom, 
            SdmxStructureType structureType, 
            string id, 
            Uri uri, 
            IList<TextType> name, 
            IList<TextType> description, 
            AnnotationsType annotationsType, 
            IIdentifiableObject parent)
            : base(createdFrom, structureType, id, uri, name, description, annotationsType, parent)
        {
            this._items = new List<IItemMap>();
        }
示例#41
0
文件: Xlob.cs 项目: bittercoder/Lob
 public static Xlob Create(IXmlSerializable obj)
 {
     return new XmlSerializableObjectXlob(obj);
 }
示例#42
0
		void WriteSerializable (IXmlSerializable serializable, string name, string ns, bool isNullable, bool wrapped)
		{
			if (serializable == null)
			{
				if (isNullable && wrapped) WriteNullTagLiteral (name, ns);
				return;
			}
			else
			{
				if (wrapped)
					Writer.WriteStartElement (name, ns);
				serializable.WriteXml (Writer);
				if (wrapped)
					Writer.WriteEndElement ();
			}
		}
        /// <summary>
        /// Generates an object from its XML representation.
        /// </summary>
        /// <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized.</param>
        public void ReadXml(System.Xml.XmlReader reader)
        {
            XPathDocument doc = new XPathDocument(reader);
            XPathNavigator nav = doc.CreateNavigator();

            XPathNavigator iter = nav.SelectSingleNode("TLExperimentResults/TechniqueName");
            if (iter != null)
                TechniqueName = iter.Value;

            iter = nav.SelectSingleNode("TLExperimentResults/Score");
            if (iter != null)
            {
                Score = iter.ValueAsDouble;
            }

            iter = nav.SelectSingleNode("TLExperimentResults/BaseData");
            if (iter != null)
            {
                string qualifiedTypeName = iter.GetAttribute("type", String.Empty);
                Type baseDataType = Type.GetType(qualifiedTypeName);
                if (baseDataType != null)
                {
                    var serializer = TraceLab.Core.Serialization.XmlSerializerFactory.GetSerializer(baseDataType, null);
                    iter.MoveToChild(XPathNodeType.Element); //move to nodes value
                    BaseData = (IXmlSerializable)serializer.Deserialize(iter.ReadSubtree());
                }
            }

            var datasetsResultSerializer = TraceLab.Core.Serialization.XmlSerializerFactory.GetSerializer(typeof(DatasetResults), null);
            iter = nav.SelectSingleNode("TLExperimentResults/DatasetsResults");
            if (iter != null)
            {
                m_datasetsResults = new List<DatasetResults>();
                XPathNodeIterator resultsNodes = iter.Select("DatasetResults");
                while (resultsNodes.MoveNext())
                {
                    var result = (DatasetResults)datasetsResultSerializer.Deserialize(resultsNodes.Current.ReadSubtree());
                    m_datasetsResults.Add(result);
                }
            }

            iter = nav.SelectSingleNode("TLExperimentResults/AcrossAllDatasetsResults");
            if (iter != null)
            {
                iter.MoveToChild(XPathNodeType.Element); //move to nodes value
                AcrossAllDatasetsResults = (DatasetResults)datasetsResultSerializer.Deserialize(iter.ReadSubtree());
            }
        }
示例#44
0
        ///////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////BUILD FROM V1 SCHEMA                 //////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////

        /// <summary>
        /// Initializes a new instance of the <see cref="NameableCore"/> class.
        /// </summary>
        /// <param name="createdFrom">
        /// The created from. 
        /// </param>
        /// <param name="structureType">
        /// The structure type. 
        /// </param>
        /// <param name="id">
        /// The id. 
        /// </param>
        /// <param name="uri">
        /// The uri. 
        /// </param>
        /// <param name="name0">
        /// The name 0. 
        /// </param>
        /// <param name="description1">
        /// The description 1. 
        /// </param>
        /// <param name="annotationsType">
        /// The annotations type. 
        /// </param>
        /// <param name="parent">
        /// The parent. 
        /// </param>
        protected NameableCore(
            IXmlSerializable createdFrom, 
            SdmxStructureType structureType, 
            string id, 
            Uri uri, 
            IList<Org.Sdmx.Resources.SdmxMl.Schemas.V10.common.TextType> name0, 
            IList<Org.Sdmx.Resources.SdmxMl.Schemas.V10.common.TextType> description1, 
            Org.Sdmx.Resources.SdmxMl.Schemas.V10.common.AnnotationsType annotationsType, 
            IIdentifiableObject parent)
            : base(createdFrom, structureType, id, uri, annotationsType, parent)
        {
            this.name = new List<ITextTypeWrapper>();
            this.description = new List<ITextTypeWrapper>();
            this.name = TextTypeUtil.WrapTextTypeV1(name0, this);
            this.description = TextTypeUtil.WrapTextTypeV1(description1, this);
            this.ValidateNameableAttributes();
        }
        /// <summary>
        /// Reads the data. (allows faster custom serialization for better performance in TraceLab)
        /// </summary>
        /// <param name="reader">The reader.</param>
        public void ReadData(System.IO.BinaryReader reader)
        {
            int dataversion = reader.ReadInt32();
            if (dataversion != TLExperimentResults.version)
            {
                throw new InvalidOperationException("Binary reader did not read correct data version. Data corrupted. Potentially IRawSerializable not implemented correctly");
            }
            else
            {
                this.m_techniqueName = reader.ReadString();

                int resultsCount = reader.ReadInt32();
                this.m_datasetsResults = new List<DatasetResults>(resultsCount);
                for (int i = 0; i < resultsCount; i++)
                {
                    DatasetResults result = (DatasetResults)Activator.CreateInstance(typeof(DatasetResults), true);
                    result.ReadData(reader);
                    this.m_datasetsResults.Add(result);
                }

                this.m_score = reader.ReadDouble();

                bool isMemberPresent = reader.ReadBoolean();
                if (isMemberPresent)
                {
                    DatasetResults result = (DatasetResults)Activator.CreateInstance(typeof(DatasetResults), true);
                    result.ReadData(reader);
                    this.m_acrossAllDatasetsResults = result;
                }

                this.m_baseData = null;
            }
        }
 /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.WriteSerializable"]/*' />
 protected void WriteSerializable(IXmlSerializable serializable, string name, string ns, bool isNullable) {
     WriteSerializable(serializable, name, ns, isNullable, true);
 }
示例#47
0
		protected IXmlSerializable ReadSerializable (IXmlSerializable serializable)
		{
			if (ReadNull ()) return null;
			int depth = reader.Depth;
			readCount++;
			serializable.ReadXml (reader);
			Reader.MoveToContent ();
			while (reader.Depth > depth)
				reader.Skip ();
			if (reader.Depth == depth && reader.NodeType == XmlNodeType.EndElement)
				reader.ReadEndElement ();
			return serializable;
		}
 public XmlSerializableObjectXlob(IXmlSerializable obj)
 {
     if (obj == null) throw new ArgumentNullException("obj");
     _obj = obj;
 }
        ///////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////BUILD FROM V2 SCHEMA                 //////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////

        /// <summary>
        /// Initializes a new instance of the <see cref="SchemeMapCore"/> class.
        /// </summary>
        /// <param name="createdFrom">
        /// The created from. 
        /// </param>
        /// <param name="structureType">
        /// The structure type. 
        /// </param>
        /// <param name="id">
        /// The id. 
        /// </param>
        /// <param name="uri">
        /// The uri. 
        /// </param>
        /// <param name="name">
        /// The name. 
        /// </param>
        /// <param name="description">
        /// The description. 
        /// </param>
        /// <param name="annotationsType">
        /// The annotations type. 
        /// </param>
        /// <param name="parent">
        /// The parent. 
        /// </param>
        internal SchemeMapCore(
            IXmlSerializable createdFrom, 
            SdmxStructureType structureType, 
            string id, 
            Uri uri, 
            IList<TextType> name, 
            IList<TextType> description, 
            AnnotationsType annotationsType, 
            IIdentifiableObject parent)
            : base(createdFrom, structureType, id, uri, name, description, annotationsType, parent)
        {
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////BUILD FROM V2 SCHEMA                 //////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////

        /// <summary>
        /// Initializes a new instance of the <see cref="IdentifiableCore"/> class.
        /// </summary>
        /// <param name="createdFrom">
        /// The created from.
        /// </param>
        /// <param name="structureType">
        /// The structure type.
        /// </param>
        /// <param name="id0">
        /// The id 0.
        /// </param>
        /// <param name="uri1">
        /// The uri 1.
        /// </param>
        /// <param name="annotationsType">
        /// The annotations type.
        /// </param>
        /// <param name="parent">
        /// The parent.
        /// </param>
        protected IdentifiableCore(IXmlSerializable createdFrom, SdmxStructureType structureType, string id0, Uri uri1, AnnotationsType annotationsType, ISdmxStructure parent)
            : base(createdFrom, annotationsType, structureType, parent)
        {
            this._id = id0;
            this.Uri = uri1;
            this.ValidateIdentifiableAttributes();
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////BUILD FROM V1 SCHEMA                 //////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////

        /// <summary>
        /// Initializes a new instance of the <see cref="IdentifiableCore"/> class.
        /// </summary>
        /// <param name="createdFrom">
        /// The created from.
        /// </param>
        /// <param name="structureType">
        /// The structure type.
        /// </param>
        /// <param name="id0">
        /// The id 0.
        /// </param>
        /// <param name="uri1">
        /// The uri 1.
        /// </param>
        /// <param name="annotationsType">
        /// The annotations type.
        /// </param>
        /// <param name="parent">
        /// The parent.
        /// </param>
        protected IdentifiableCore(
            IXmlSerializable createdFrom, SdmxStructureType structureType, string id0, Uri uri1, Org.Sdmx.Resources.SdmxMl.Schemas.V10.common.AnnotationsType annotationsType, ISdmxStructure parent)
            : base(createdFrom, annotationsType, structureType, parent)
        {
            this._id = id0;
            this.Uri = uri1;
            this.ValidateIdentifiableAttributes();
        }
		private static void SerializeCustom(XmlWriter writer, XPathResult result, XPathNavigator node, IXmlSerializable value)
		{
			if (string.IsNullOrEmpty(node.NamespaceURI))
			{
				writer.WriteStartElement(node.LocalName);
			}
			else
			{
				var prefix = result.Context.AddNamespace(node.NamespaceURI);
				writer.WriteStartElement(prefix, node.LocalName, node.NamespaceURI);
			}
			value.WriteXml(writer);
			writer.WriteEndElement();
		}
        /// <include file='doc\XmlSerializationReader.uex' path='docs/doc[@for="XmlSerializationReader.ReadSerializable"]/*' />
        protected IXmlSerializable ReadSerializable(IXmlSerializable serializable, bool wrappedAny)
        {
            string name = null;
            string ns = null;

            if (wrappedAny) {
                name = r.LocalName;
                ns = r.NamespaceURI;
                r.Read();
                r.MoveToContent();
            }
            serializable.ReadXml(r);

            if (wrappedAny) {
                while (r.NodeType == XmlNodeType.Whitespace) r.Skip();
                if (r.NodeType == XmlNodeType.None) r.Skip();
                if (r.NodeType == XmlNodeType.EndElement && r.LocalName == name && r.NamespaceURI == ns) {
                    Reader.Read();
                }
            }
            return serializable;
        }
		///////////////////////////////////////////////////////////////////////////////////////////////////
		////////////BUILD FROM V1 SCHEMA                 //////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////////////////

		/// <summary>
		/// Initializes a new instance of the <see cref="ComponentCore"/> class.
		/// </summary>
		/// <param name="createdFrom">
		/// The created from. 
		/// </param>
		/// <param name="structureType">
		/// The structure type. 
		/// </param>
		/// <param name="annotationType">
		/// The annotation type. 
		/// </param>
		/// <param name="codelistId">
		/// The codelist id. 
		/// </param>
		/// <param name="conceptId">
		/// The concept id. 
		/// </param>
		/// <param name="parent">
		/// The parent. 
		/// </param>
		protected internal ComponentCore(
			IXmlSerializable createdFrom, 
			SdmxStructureType structureType, 
			Org.Sdmx.Resources.SdmxMl.Schemas.V10.common.AnnotationsType annotationType, 
			string codelistId, 
			string conceptId, 
			ISdmxStructure parent)
			: base(createdFrom, structureType, conceptId, null, annotationType, parent)
		{
			if (!string.IsNullOrWhiteSpace(codelistId))
			{
				this.LocalRepresentation = new RepresentationCore(codelistId, this);
			}

			this._conceptRef = new CrossReferenceImpl(
				this, 
				this.MaintainableParent.AgencyId, 
				ConceptSchemeObject.DefaultSchemeVersion, 
				ConceptSchemeObject.DefaultSchemeVersion, 
				SdmxStructureEnumType.Concept, 
				conceptId);
			this.ValidateComponentAttributes();
		}
示例#55
0
        ///////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////BUILD FROM V1 SCHEMA                 //////////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////    

        /// <summary>
        ///   Initializes a new instance of the <see cref="AnnotableCore" /> class.
        /// </summary>
        /// <param name="createdFrom"> The created from. </param>
        /// <param name="annotationType"> The annotation type. </param>
        /// <param name="structureType"> The structure type. </param>
        /// <param name="parent"> The parent. </param>
        protected internal AnnotableCore(
            IXmlSerializable createdFrom,
            Org.Sdmx.Resources.SdmxMl.Schemas.V10.common.AnnotationsType annotationType,
            SdmxStructureType structureType,
            ISdmxStructure parent)
            : base(structureType, parent)
        {
            this.annotations = new List<IAnnotation>();
            if (annotationType != null && annotationType.Annotation != null)
            {
                foreach (Org.Sdmx.Resources.SdmxMl.Schemas.V10.common.AnnotationType currentAnnotation in
                    annotationType.Annotation)
                {
                    this.annotations.Add(new AnnotationObjectCore(currentAnnotation, this));
                }
            }
        }
示例#56
0
 /// <include file='doc\XmlSerializationReader.uex' path='docs/doc[@for="XmlSerializationReader.ReadSerializable"]/*' />
 protected IXmlSerializable ReadSerializable(IXmlSerializable serializable) {
     serializable.ReadXml(r);
     return serializable;
 }
 private static string WriteXml(IXmlSerializable obj)
 {
     var f = Path.GetTempFileName();
     //var f = "test.xml";
     using (var writer = GetXmlWriter(f))
     {
         writer.WriteStartElement("root");
         obj.WriteXml(writer);
         writer.WriteEndElement();
     }
     return f;
 }
		///////////////////////////////////////////////////////////////////////////////////////////////////
		////////////BUILD FROM V2 SCHEMA                 //////////////////////////////////////////////////
		///////////////////////////////////////////////////////////////////////////////////////////////////

		/// <summary>
		/// Initializes a new instance of the <see cref="ComponentCore"/> class.
		/// </summary>
		/// <param name="createdFrom">
		/// The created from. 
		/// </param>
		/// <param name="structureType">
		/// The structure type. 
		/// </param>
		/// <param name="annotationType">
		/// The annotation type. 
		/// </param>
		/// <param name="textFormat">
		/// The text format. 
		/// </param>
		/// <param name="codelistAgency">
		/// The codelist agency. 
		/// </param>
		/// <param name="codelistId">
		/// The codelist id. 
		/// </param>
		/// <param name="codelistVersion">
		/// The codelist version. 
		/// </param>
		/// <param name="conceptSchemeAgency">
		/// The concept scheme agency. 
		/// </param>
		/// <param name="conceptSchemeId">
		/// The concept scheme id. 
		/// </param>
		/// <param name="conceptSchemeVersion">
		/// The concept scheme version. 
		/// </param>
		/// <param name="conceptAgency">
		/// The concept agency. 
		/// </param>
		/// <param name="conceptId">
		/// The concept id. 
		/// </param>
		/// <param name="parent">
		/// The parent. 
		/// </param>
		protected internal ComponentCore(
			IXmlSerializable createdFrom, 
			SdmxStructureType structureType, 
			AnnotationsType annotationType, 
			TextFormatType textFormat, 
			string codelistAgency, 
			string codelistId, 
			string codelistVersion, 
			string conceptSchemeAgency, 
			string conceptSchemeId, 
			string conceptSchemeVersion, 
			string conceptAgency, 
			string conceptId, 
			IIdentifiableObject parent)
			: base(createdFrom, structureType, conceptId, null, annotationType, parent)
		{
			if (string.IsNullOrWhiteSpace(conceptAgency))
			{
				conceptAgency = this.MaintainableParent.AgencyId;
			}

			if (textFormat != null || ObjectUtil.ValidOneString(codelistAgency, codelistId, codelistVersion))
			{
				if (ObjectUtil.ValidOneString(codelistAgency, codelistId, codelistVersion))
				{
					if (string.IsNullOrWhiteSpace(codelistAgency))
					{
						codelistAgency = this.MaintainableParent.AgencyId;
					}
				}

				this.LocalRepresentation = new RepresentationCore(
					textFormat, codelistAgency, codelistId, codelistVersion, this);
			}

			this._conceptRef = ConceptRefUtil.BuildConceptRef(
				this, conceptSchemeAgency, conceptSchemeId, conceptSchemeVersion, conceptAgency, conceptId);
			this.ValidateComponentAttributes();
		}
 /// <include file='doc\XmlSerializationWriter.uex' path='docs/doc[@for="XmlSerializationWriter.WriteSerializable1"]/*' />
 protected void WriteSerializable(IXmlSerializable serializable, string name, string ns, bool isNullable, bool wrapped) {
     if (serializable == null) {
         if (isNullable) WriteNullTagLiteral(name, ns);
         return;
     }
     if (wrapped) {
         w.WriteStartElement(name, ns);
     }
     serializable.WriteXml(w);
     if (wrapped) {
         w.WriteEndElement();
     }
 }
        /// <summary>
        /// Create a PUT request that sends an object to the API
        /// </summary>
        /// <param name="uri"></param>
        /// <returns></returns>
        private HttpWebRequest CreateRequestPUT(Uri uri, IXmlSerializable value = null)
        {
            HttpWebRequest request = this.CreateRequest(uri, "PUT");

            if (value != null)
            {
                using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
                {
                    writer.Write(value.ToXmlString());
                }
            }
            else
            {
                request.ContentLength = 0;
            }

            return request;
        }