Ответы пользователя по тегу Xamarin
  • Как сериализовать в UTF-8?

    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>
    Ответ написан
    5 комментариев