Как сериализировать XML без ненужных пробелов и разрывов строки? (.NET)

Согласно этому сообщение в списке рассылки GCC , можно использовать файл "nul" вместо/dev/null:

#include 

int main ()
{
    FILE* outfile = fopen ("/dev/null", "w");
    if (outfile == NULL)
    {
        fputs ("could not open '/dev/null'", stderr);
    }
    outfile = fopen ("nul", "w");
    if (outfile == NULL)
    {
        fputs ("could not open 'nul'", stderr);
    }

    return 0;
}

(Кредиты к Danny для этого кода; вставляемый копией из его сообщения.)

можно также использовать этот специальный "nul" файл посредством перенаправления.

12
задан Jader Dias 16 July 2009 в 17:23
поделиться

2 ответа

Возможно, вы могли бы использовать перегрузку, принимающую XmlWriter , и настроить данный XmlWriter с экземпляром XmlWriterSettings ?

] XmlWriterSettings позволяет вам управлять применением разрывов строк и отступов.

void Serialize(Object o)
{
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = false;
    settings.NewLineHandling = NewLineHandling.None;
    //settings.OtherProperties = values;

    using (XmlWriter writer = XmlWriter.Create(CreateStream(), settings))
    {
        _serializer.Serialize(writer, o);
    }
}
22
ответ дан 2 December 2019 в 06:26
поделиться

It's interesting, I thought there was no formatting by default. I just tried the following and got no formatting:

using (var stream = new MemoryStream())
{
    System.Text.Encoding encoding;
    using (var writer = XmlWriter.Create(stream))
    {
        if (writer == null)
        {
            throw new InvalidOperationException("writer is null");
        }

        encoding = writer.Settings.Encoding;
        var ser = new XmlSerializer(obj.GetType());
        ser.Serialize(writer, obj);
    }

    stream.Position = 0;
    using (var reader = new StreamReader(stream, encoding, true))
    {
        return reader.ReadToEnd();
    }
}

in a sample run, it returned the following XML:

<?xml version="1.0" encoding="utf-8"?><obj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><childOne /><childTwo /><text>text1</text><text>text2</text></obj>
2
ответ дан 2 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: