Форматирование XML создается DataContractSerializer

Если вы используете Back4App, правильный URL-адрес сервера:

https://parseapi.back4app.com/files/pic.jpg

54
задан Aidan Ryan 4 November 2011 в 07:36
поделиться

4 ответа

Как говорит Бендевей, XmlWriterSettings - это то, что вам нужно - например, что-то вроде

var ds = new DataContractSerializer(typeof(Foo));

var settings = new XmlWriterSettings { Indent = true };

using (var w = XmlWriter.Create("fooOutput.xml", settings))
    ds.WriteObject(w, someFoos);
87
ответ дан Steve Willcock 7 November 2019 в 07:53
поделиться

Посмотрите на свойство Indent обновления XmlWriterSettings

: Вот хорошая ссылка из MSDN на Как: Указать формат вывода на XmlWriter

Кроме того, вот пример:

class Program
{
    static void Main(string[] args)
    {
        var Mark = new Person()
        {
            Name = "Mark",
            Email = "mark@example.com"
        };

        var serializer = new DataContractSerializer(typeof(Person));

        var settings = new XmlWriterSettings()
        {
            Indent = true,
            IndentChars = "\t"
        };

        using (var writer = XmlWriter.Create(Console.Out, settings))
        {
            serializer.WriteObject(writer, Mark);
        }
        Console.ReadLine();
    }
}
public class Person
{
    public string Name { get; set; }
    public string Email { get; set; }
}
19
ответ дан bendewey 7 November 2019 в 07:53
поделиться
    public static string SerializeEntity<T>(T source)
    {
        using (MemoryStream ms = new MemoryStream())
        {

                NetDataContractSerializer serializer = new NetDataContractSerializer();
                serializer.Serialize(ms, source);
                return System.Text.Encoding.ASCII.GetString(ms.ToArray());

        }
    }

    public static T DeSerializeEntity<T>(string xml)
    {
        using (MemoryStream ms = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(xml)))
        {
                NetDataContractSerializer serializer = new NetDataContractSerializer();
                return (T)serializer.Deserialize(ms);
        }
    }
2
ответ дан 7 November 2019 в 07:53
поделиться

Будьте осторожны при корректировке пробельных символов в XML-документах! Корректировка пробельных символов сделает XML более читабельным для нас, людей, но может помешать машинному разбору.

Согласно стандарту XML, пробельные символы по умолчанию являются значимыми. Другими словами, с точки зрения XML, пробел - это содержание.

Если вы подадите ваш красиво отформатированный XML в объект XML Document, вы получите результат, отличный от версии, в которой нет пробелов и переносов строк. Вы получите дополнительные текстовые узлы, добавленные к версии, которая была отформатирована.

В этой статье MSDN о XML White Space есть несколько примеров, которые показывают, насколько сложным может быть пробел.

Если вы форматируете XML только для человеческого потребления, это не имеет значения. Но если вы попытаетесь использовать отформатированный документ по кругу, у вас могут возникнуть проблемы.

Поскольку одним из основных преимуществ использования DataContractSerializer является возможность сериализации объектов и десериализации XML без проблем, обычно лучше оставить некрасивый вывод в покое.

Я обычно вставляю вывод в NotePad++ и запускаю макрос XML-tidy, когда хочу прочитать его для отладки.

7
ответ дан 7 November 2019 в 07:53
поделиться
Другие вопросы по тегам:

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