TheTalion
@TheTalion

Как сериализовать в UTF-8?

Нужно чтобы у файла, который мы сериализуем и десериализуем сверху была такая надпись
5a03986f91917839173373.jpeg

Как сделать правильно?
  • Вопрос задан
  • 1362 просмотра
Решения вопроса 1
mshak
@mshak
Например так:
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace XmlSerializeDemo
{
    [XmlRoot("TechTree")]
    public class Tech
    {
        [XmlAttribute("version")]
        public int Version { get; set; }

        [XmlElement("Info")]
        public string Description { get; set; }
    }

    internal class Program
    {
        private static void Main(string[] args)
        {
            var t = new Tech() { Version = 5, Description = "I'm xml" };
            Serialize(@".\demo.xml", t);
        }

        private static void Serialize<T>(string path, T obj)
        {
            XmlSerializer serializer = new XmlSerializer(obj.GetType());
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.ConformanceLevel = ConformanceLevel.Document;
            settings.OmitXmlDeclaration = false; // не подавлять xml заголовок
            settings.Encoding = Encoding.UTF8; // кодировка
            settings.Indent = true; // добавлять отступы
            settings.IndentChars = "    "; // сиволы отступа

            // подавляем неймспейсы
            XmlSerializerNamespaces dummyNSs = new XmlSerializerNamespaces();
            dummyNSs.Add(string.Empty, string.Empty);

            using (FileStream fileStream = new FileStream(path, FileMode.Create))
            {
                using (XmlWriter xw = XmlWriter.Create(fileStream, settings))
                {
                    serializer.Serialize(xw, obj, dummyNSs);
                }
            }
        }
    }
}


на выходе данного демо будет следующий файл
<?xml version="1.0" encoding="utf-8"?>
<TechTree version="5">
    <Info>I'm xml</Info>
</TechTree>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@rare
Попробуйте добавить XDeclaration.
https://msdn.microsoft.com/en-us/library/system.xm...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы