System.Configuration.ConfigurationSection.SerializeSection C# (CSharp) Method

SerializeSection() protected method

protected SerializeSection ( ConfigurationElement parentElement, string name, ConfigurationSaveMode saveMode ) : string
parentElement ConfigurationElement
name string
saveMode ConfigurationSaveMode
return string
		protected internal virtual string SerializeSection (ConfigurationElement parentElement, string name, ConfigurationSaveMode saveMode)
		{
			externalDataXml = null;
			ConfigurationElement elem;
			if (parentElement != null) {
				elem = (ConfigurationElement) CreateElement (GetType());
				elem.Unmerge (this, parentElement, saveMode);
			}
			else
				elem = this;
			
			string ret;			
			using (StringWriter sw = new StringWriter ()) {
				using (XmlTextWriter tw = new XmlTextWriter (sw)) {
					tw.Formatting = Formatting.Indented;
					elem.SerializeToXmlElement (tw, name);
					tw.Close ();
				}
				
				ret = sw.ToString ();
			}
			
			string config_source = SectionInformation.ConfigSource;
			
			if (String.IsNullOrEmpty (config_source))
				return ret;

			externalDataXml = ret;
			using (StringWriter sw = new StringWriter ()) {
				bool haveName = !String.IsNullOrEmpty (name);

				using (XmlTextWriter tw = new XmlTextWriter (sw)) {
					if (haveName)
						tw.WriteStartElement (name);
					tw.WriteAttributeString ("configSource", config_source);
					if (haveName)
						tw.WriteEndElement ();
				}

				return sw.ToString ();
			}
		}
	}

Usage Example

Example #1
0
        public override void WriteData(Configuration config, XmlWriter writer, ConfigurationSaveMode mode)
        {
            string xml;

            ConfigurationSection section = config.GetSectionInstance(this, false);

            if (section != null)
            {
                ConfigurationSection parentSection = config.Parent != null?config.Parent.GetSectionInstance(this, false) : null;

                xml = section.SerializeSection(parentSection, Name, mode);

                string externalDataXml = section.ExternalDataXml;
                string filePath        = config.FilePath;

                if (!String.IsNullOrEmpty(filePath) && !String.IsNullOrEmpty(externalDataXml))
                {
                    string path = Path.Combine(Path.GetDirectoryName(filePath), section.SectionInformation.ConfigSource);
                    using (StreamWriter sw = new StreamWriter(path))
                    {
                        sw.Write(externalDataXml);
                    }
                }

                if (section.SectionInformation.IsProtected)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.AppendFormat("<{0} configProtectionProvider=\"{1}\">\n",
                                    Name,
                                    section.SectionInformation.ProtectionProvider.Name);
                    sb.Append(config.ConfigHost.EncryptSection(xml,
                                                               section.SectionInformation.ProtectionProvider,
                                                               ProtectedConfiguration.Section));
                    sb.AppendFormat("</{0}>", Name);
                    xml = sb.ToString();
                }
            }
            else
            {
                xml = config.GetSectionXml(this);
            }

            if (xml != null)
            {
                writer.WriteRaw(xml);

                /*				XmlTextReader tr = new XmlTextReader (new StringReader (xml));
                 *                          writer.WriteNode (tr, true);
                 *                          tr.Close ();*/
            }
        }