Ответ 1
Вы не можете добавлять атрибуты в DataContract. Вы либо должны использовать класс, который реализует ISerializable, либо использовать .Net XmlSerializer.
У меня есть простой класс, который я сериализую.
[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-элементов?
Спасибо заранее.
Вы не можете добавлять атрибуты в DataContract. Вы либо должны использовать класс, который реализует ISerializable, либо использовать .Net XmlSerializer.
Не совсем ответ, но вы можете попытаться реализовать IXmlSerializable, чтобы полностью контролировать выходной XML-формат.
Я смог достичь этого, объявив XElement, у которого есть атрибуты, определенные в нем. Пример:
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; }
}
}