When using the default settings with the XmlSerializer it will output the XML as a formated value.
IE: something along these lines.
<?xml version="1.0" encoding="utf-8"?> <ArrayOfStock xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Stock> <ProductCode>12345</ProductCode> <ProductPrice>10.32</ProductPrice> </Stock> <Stock> <ProductCode>45632</ProductCode> <ProductPrice>5.43</ProductPrice> </Stock> </ArrayOfStock>
How does one prevent any type of formatting on the output? So what I am looking to achieve is this.
<?xml version="1.0" encoding="utf-8"?><ArrayOfStock xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Stock><ProductCode>123456</ProductCode><ProductPrice>10.57</ProductPrice></Stock><Stock><ProductCode>789123</ProductCode><ProductPrice>133.22</ProductPrice></Stock></ArrayOfStock>
EDIT: The full code of my method is
public static String Serialize(Stock stock) { XmlSerializer serializer = new XmlSerializer(typeof(Stock)); using (StringWriter stringWriter = new StringWriter()) { serializer.Serialize(stringWriter, stock); return stringWriter.ToString(); } }
Not very intuitive, but the Indent
property on the XmlWriterSettings
controls the whole formatting:
var serializer = new XmlSerializer(typeof(MyClass)); using (var writer = new StreamWriter("file.path")) using (var xmlWriter = XmlWriter.Create(writer, new XmlWriterSettings { Indent = false })) { serializer.Serialize(xmlWriter, myObject); }
There are a few more options on XmlWriterSettings
that you might want to explore.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With