Мне нужно сериализовать объект ac # в xml, я мог бы сделать это как в отформатированном разделе, но можно ли добиться этого без форматирования, в котором нет отступов / лишних пробелов / новых строк. Это необходимо, так как нам нужно записать весь объект в CSV, поэтому нам нужна уменьшенная версия. Я попытался пару XmlWriterSettings, но это не сработало, как ожидалось. Любой фрагмент кода будет очень полезен, и сериализуемый объект может иметь другие ссылочные типы в качестве членов, которые могут наследоваться от другого базового класса, поэтому сериализатору могут понадобиться известные типы
Форматированный XML:
<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>
Без форматирования:
<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>
Пробный код:
Type[] _knownExpressions = new Type[]
{
typeof(SimpleExpression),
typeof(CompositeExpression)
};
string expression = string.Empty;
MemoryStream ms = new MemoryStream();
DataContractSerializer dcs = new DataContractSerializer(typeof(Expression), _knownExpressions);
using (XmlTextWriter xmlTextWriter = new XmlTextWriter(ms, System.Text.Encoding.Default))
{
xmlTextWriter.Formatting = Formatting.None;
dcs.WriteObject(xmlTextWriter, expression);
xmlTextWriter.Flush();
xmlTextWriter.BaseStream.Position = 0;
StreamReader sr = new StreamReader(xmlTextWriter.BaseStream);
expression = sr.ReadToEnd();
sr.Close();
}