Подтвердить что ты не робот

Как я могу сделать xmlserializer только сериализацией простого xml?

Мне нужно получить простой xml, без <?xml version="1.0" encoding="utf-16"?> в начале и xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" в первом элементе из XmlSerializer. Как я могу это сделать?

4b9b3361

Ответ 1

Чтобы соединить все это - это отлично работает для меня:

    // To Clean XML
    public string SerializeToString<T>(T value)
    {
        var emptyNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
        var serializer = new XmlSerializer(value.GetType());
        var settings = new XmlWriterSettings();
        settings.Indent = true;
        settings.OmitXmlDeclaration = true;

        using (var stream = new StringWriter())
        using (var writer = XmlWriter.Create(stream, settings))
        {
            serializer.Serialize(writer, value, emptyNamespaces);
            return stream.ToString();
        }
    }

Ответ 2

Используйте перегрузку метода XmlSerializer.Serialize, где вы можете указать собственные пространства имен и передать там это.

var emptyNs = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });
serializer.Serialize(xmlWriter, objectToSerialze, emptyNs);

Передача пустого или пустого массива не приведет к трюку

Ответ 3

Вы можете использовать XmlWriterSettings и установить для свойства OmitXmlDeclaration значение true как описанное в msdn. Затем используйте XmlSerializer.Serialize(xmlWriter, objectToSerialize) как описано здесь.

Ответ 4

Это запишет XML в файл вместо строки. Билет объекта - это объект, который я сериализую.

Используемые пространства имен:

using System.Xml;
using System.Xml.Serialization;

Код:

XmlSerializerNamespaces emptyNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty });

XmlSerializer serializer = new XmlSerializer(typeof(ticket));

XmlWriterSettings settings = new XmlWriterSettings
{
    Indent = true,
    OmitXmlDeclaration = true
};

using (XmlWriter xmlWriter = XmlWriter.Create(fullPathFileName, settings))
{
    serializer.Serialize(xmlWriter, ticket, emptyNamespaces); 
}