Как я могу сделать 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. Как я могу это сделать?

3 54

3 ответа:

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

    // 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, emptyNamepsaces);
            return stream.ToString();
        }
    }

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

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

передача null или пустой массив не делать трюк

можно использовать XmlWriterSettings и установите свойство OmitXmlDeclaration True, как описано в msdn. Тогда используйте XmlSerializer.Сериализация (xmlWriter, objectToSerialize)как описано здесь.