Exemplo n.º 1
0
        public void SetRawXml(string rawXml)
        {
            if (string.IsNullOrEmpty(rawXml))
            {
                return;
            }

            this.m_readerWriterLock.AcquireWriterLock(Timeout.Infinite);

            try
            {
                using (XmlReader xmlReader = XmlReader.Create(new StringReader(rawXml), ReaderSettings))
                {
                    if (xmlReader.IsEmptyElement || !xmlReader.Read())
                    {
                        return;
                    }

                    xmlReader.ReadStartElement("settings");

                    this.m_settingsItemDictionary.Clear();

                    while (xmlReader.NodeType != (XmlNodeType.None | XmlNodeType.EndElement) && xmlReader.ReadState != (ReadState.Error | ReadState.EndOfFile))
                    {
                        try
                        {
                            string key   = xmlReader.GetAttribute("key");
                            object value = null;

                            try
                            {
                                xmlReader.ReadStartElement("item");

                                string valueTypeName = xmlReader.GetAttribute("type");

                                XmlSerializer valueSerializer = new XmlSerializer(Type.GetType(valueTypeName, false, true));

                                try
                                {
                                    xmlReader.ReadStartElement("value");

                                    value = valueSerializer.Deserialize(xmlReader);

                                    if (!string.IsNullOrEmpty(key))
                                    {
                                        this.m_settingsItemDictionary.Add(key, value);
                                    }
                                }
                                catch (Exception e)
                                {
                                    InternalLogger.Log(e);
                                }
                                finally
                                {
                                    xmlReader.ReadEndElement();
                                }
                            }
                            catch (Exception e)
                            {
                                xmlReader.Skip();

                                InternalLogger.Log(e);
                            }
                            finally
                            {
                                xmlReader.ReadEndElement();
                            }
                        }
                        catch (Exception e)
                        {
                            InternalLogger.Log(e);
                        }
                        finally
                        {
                            xmlReader.MoveToContent();
                        }
                    }
                }
            }
            catch (Exception e)
            {
                InternalLogger.Log(e);
            }
            finally
            {
                this.m_readerWriterLock.ReleaseWriterLock();
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Method WriteXmlFile.
        /// </summary>
        /// <param name="filename"> Xml file name.</param>
        private void WriteXmlFile(string filename)
        {
            this.m_readerWriterLock.AcquireWriterLock(Timeout.Infinite);

            try
            {
                string fullPath = Path.GetFullPath(filename);

                string fullDirectoryPath = Path.GetDirectoryName(fullPath);

                if (!Directory.Exists(fullDirectoryPath))
                {
                    try
                    {
                        Directory.CreateDirectory(fullDirectoryPath);
                    }
                    catch
                    {
                    }
                }

                using (XmlWriter writer = XmlWriter.Create(fullPath, WriterSettings))
                {
                    writer.WriteStartElement("settings");

                    foreach (KeyValuePair <string, object> item in this.m_settingsItemDictionary)
                    {
                        XmlSerializer valueSerializer = null;

                        try
                        {
                            Type valueType = item.Value.GetType();
                            valueSerializer = new XmlSerializer(valueType);

                            writer.WriteStartElement("item");

                            writer.WriteStartAttribute("key");
                            writer.WriteValue(item.Key);
                            writer.WriteEndAttribute();

                            writer.WriteStartElement("value");

                            writer.WriteStartAttribute("type");
                            writer.WriteValue(valueType.AssemblyQualifiedName);
                            writer.WriteEndAttribute();

                            try
                            {
                                valueSerializer.Serialize(writer, item.Value, EmptyXmlSerializerNamespaces);
                            }
                            catch (Exception e)
                            {
                                InternalLogger.Log(e);
                            }
                            finally
                            {
                                writer.WriteEndElement();
                            }

                            writer.WriteEndElement();
                        }
                        catch (Exception e)
                        {
                            InternalLogger.Log(e);
                        }
                    }

                    writer.WriteEndElement();
                }
            }
            catch (Exception e)
            {
                InternalLogger.Log(e);
            }
            finally
            {
                this.m_readerWriterLock.ReleaseWriterLock();
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Gets an XML string that represents the Settings.
        /// </summary>
        /// <returns>The XML representation for this Settings.</returns>
        public string GetRawXml()
        {
            StringBuilder stringBuilder = new StringBuilder();

            this.m_readerWriterLock.AcquireWriterLock(Timeout.Infinite);

            try
            {
                using (XmlWriter writer = XmlWriter.Create(stringBuilder, WriterSettings))
                {
                    writer.WriteStartElement("settings");

                    foreach (KeyValuePair <string, object> item in this.m_settingsItemDictionary)
                    {
                        XmlSerializer valueSerializer = null;

                        try
                        {
                            Type valueType = item.Value.GetType();
                            valueSerializer = new XmlSerializer(valueType);

                            writer.WriteStartElement("item");

                            writer.WriteStartAttribute("key");
                            writer.WriteValue(item.Key);
                            writer.WriteEndAttribute();

                            writer.WriteStartElement("value");

                            writer.WriteStartAttribute("type");
                            writer.WriteValue(valueType.AssemblyQualifiedName);
                            writer.WriteEndAttribute();

                            try
                            {
                                valueSerializer.Serialize(writer, item.Value, EmptyXmlSerializerNamespaces);
                            }
                            catch (Exception e)
                            {
                                InternalLogger.Log(e);
                            }
                            finally
                            {
                                writer.WriteEndElement();
                            }

                            writer.WriteEndElement();
                        }
                        catch (Exception e)
                        {
                            InternalLogger.Log(e);
                        }
                    }

                    writer.WriteEndElement();
                }
            }
            catch (Exception e)
            {
                InternalLogger.Log(e);
            }
            finally
            {
                this.m_readerWriterLock.ReleaseWriterLock();
            }

            return(stringBuilder.ToString());
        }