Как я управляю <? xml?> часть XML-сериализации с.NET?

Принятие файла синтаксиса имеет хорошее расположение с отступом для сценария Java, визуально выделите блок и нажатие =. Это работает на Java, таким образом, я ожидал бы, что это сделает что-то наполовину достойное для сценария Java. Результаты, вероятно, также зависят от настроек позиции табуляции, expandtab и возможно shiftwidth.

GQ полезен также, он форматирует строки, а не располагает их с отступом.

13
задан Community 23 May 2017 в 12:23
поделиться

2 ответа

Попробуйте следующее:

public static string XmlSerialize(object o)
{
    using (var stringWriter = new StringWriter())
    {
        var settings = new XmlWriterSettings
                           {
                               Encoding = Encoding.GetEncoding(1252),
                               OmitXmlDeclaration = true
                           };
        using (var writer = XmlWriter.Create(stringWriter, settings))
        {
            var xmlSerializer = new XmlSerializer(o.GetType());
            xmlSerializer.Serialize(writer, o);
        }
        return stringWriter.ToString();
    }
}

Это не избавит от пространства имен xsd:, но тогда почему вы хотите?


Обновление: Кажется, что всякий раз, когда вы используйте StringWriter , вы получите UTF-16, даже если вы используете XmlWriter поверх него с набором кодировки. Следующим шагом будет запись в MemoryStream . Но возникает вопрос, почему вы хотите вернуть строку. Например, если вы собираетесь просто развернуть и вывести строку в поток, то мы должны вывести непосредственно в этот поток. То же самое для TextWriter .

25
ответ дан 1 December 2019 в 21:12
поделиться

You can use an XmlTextWriter instead of a StringWriter. Here is an extract from some of my code with your encoding set.

XmlTextWriter textWriter = new XmlTextWriter(stream, Encoding.GetEncoding(1252));
textWriter.Namespaces = false;
2
ответ дан 1 December 2019 в 21:12
поделиться
Другие вопросы по тегам:

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