Принятие файла синтаксиса имеет хорошее расположение с отступом для сценария Java, визуально выделите блок и нажатие =. Это работает на Java, таким образом, я ожидал бы, что это сделает что-то наполовину достойное для сценария Java. Результаты, вероятно, также зависят от настроек позиции табуляции, expandtab и возможно shiftwidth.
GQ полезен также, он форматирует строки, а не располагает их с отступом.
Попробуйте следующее:
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
.
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;