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(); } }
/// <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(); } }
/// <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()); }