how to create an xml using xml writer without declaration element
Use XmlWriterSettings.OmitXmlDeclaration
.
Don't forget to set XmlWriterSettings.ConformanceLevel
to ConformanceLevel.Fragment
.
You can subclass XmlTextWriter
and override the WriteStartDocument()
method to do nothing:
public class XmlFragmentWriter : XmlTextWriter{ // Add whichever constructor(s) you need, e.g.: public XmlFragmentWriter(Stream stream, Encoding encoding) : base(stream, encoding) { } public override void WriteStartDocument() { // Do nothing (omit the declaration) }}
Usage:
var stream = new MemoryStream();var writer = new XmlFragmentWriter(stream, Encoding.UTF8);// Use the writer ...
Reference: This blog post from Scott Hanselman.
you can use XmlWriter.Create()
with:
new XmlWriterSettings { OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Fragment } public static string FormatXml(string xml) { if (string.IsNullOrEmpty(xml)) return string.Empty; try { XmlDocument document = new XmlDocument(); document.LoadXml(xml); using (MemoryStream memoryStream = new MemoryStream()) using (XmlWriter writer = XmlWriter.Create( memoryStream, new XmlWriterSettings { Encoding = Encoding.Unicode, OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Fragment, Indent = true, NewLineOnAttributes = false })) { document.WriteContentTo(writer); writer.Flush(); memoryStream.Flush(); memoryStream.Position = 0; using (StreamReader streamReader = new StreamReader(memoryStream)) { return streamReader.ReadToEnd(); } } } catch (XmlException ex) { return "Unformatted Xml version." + Environment.NewLine + ex.Message; } catch (Exception ex) { return "Unformatted Xml version." + Environment.NewLine + ex.Message; } }