C# XML Сериализация Как установить атрибут xsi: type - PullRequest
0 голосов
/ 24 апреля 2020

Вот так должен выглядеть мой Xml после XML Сериализация:

<value xsi:type="CD" otherAttributes= "IDK">
.
.
.
</value>

Вот мой код C#:

public class Valué
{
    [XmlAttribute(AttributeName ="xsi:type")]
    public string Type { get; set; } = "CD";
    [XmlAttribute(attributeName: "otherAttributes")]
    public string OtherAttributes { get; set; } = "IDK"
}

Очевидно, что XmlSerializer может ' t сериализовать двоеточия (:) в атрибутных именах .... как мне решить эту проблему? Если я удаляю двоеточие из attributeName, оно работает нормально ..

1 Ответ

0 голосов
/ 24 апреля 2020

Сделайте это правильно:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            Valué value = new CD() { OtherAttributes = "IDK" };
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;
            XmlWriter writer = XmlWriter.Create(FILENAME, settings);
            XmlSerializer serializer = new XmlSerializer(typeof(Valué));
            serializer.Serialize(writer, value);

        }
    }
    [XmlInclude(typeof(CD))]
    public class Valué
    {
    }
    public class CD : Valué
    {
        [XmlAttribute(attributeName: "otherAttributes")]
        public string OtherAttributes { get; set; }
    }
}
...