Как добавить атрибут XML с помощью DataContract

у меня есть простой класс, который я сериализую.

 [DataContract(Name = "Test", Namespace = "")]
 public class Test
 {
    [DataMember(Order = 0, Name = "Text")]
    public string Text { get; set; }

    public Test() {}
 }

это выбивает следующий XML:

<Test>
   <Text>Text here</Text>
</Test>

чего я хочу, так это:

<Test>
   <Text type="MyType">Text here</Text>
</Test>

как добавить атрибуты элементов XML?

спасибо заранее.

4 ответов


вы не можете добавлять атрибуты DataContract. Необходимо либо использовать класс, реализующий ISerializable, либо использовать .Net XmlSerializer.


не совсем ответ, но вы можете попытаться реализовать IXmlSerializable для полного контроля выходного формата xml.


я смог достичь этого, объявив XElement, который имеет определенные в нем атрибуты. Ex:

public XElement Text { get; set;}

добавьте атрибут type с [XMLAttribute] и значение элемента с [XmlText].

public class Test
{
    public text Text;

    public Test()
    {
        Text = new text();
    }

    [DataContract(Name = "Test", Namespace = "")]
    public class text
    {
        [XmlText]
        public string Text { get; set; }
        [XmlAttribute]
        public string type { get; set; }
    }
}