2010-10-13 3 views
2

Я пытаюсь сериализовать свой объект на xml. Сериализатор, по-видимому, сериализует все данные в качестве дочерних элементов, но я хочу сериализовать все члены как атрибуты, а не дочерние.Как сериализовать членов класса как атрибуты xml в C#

Вот пример кода:

[DataContract] 
public class MyDataClass 
{ 
    [DataMember] 
    int foo = 24; 
    [DataMember] 
    string bar = "brabrabra"; 
} 

Это будет сериализовать следующие XML, когда я использую DataContractSerializer:

<MyDataClass xmlns="..." xmlns:i="..."> 
    <foo>24</foo> 
    <bar>brabrabra</bar> 
</MyDataClass> 

Однако, я хочу, чтобы сериализовать его следующим XML как-то:

<MyDataClass xmlns="..." xmlns:i="..." foo="24" bar="brabrabra" /> 

Есть ли способ сериализации таким образом? Или я должен написать свой собственный сериализатор, чтобы понять это? Для справки, я использую сериализатор DataContract в этом примере, но я могу изменить его на обычный XmlSerializer или другой, если есть лучший.

Надеюсь, что кто-то знает об этом.

Aki

ответ

2

Вы можете использовать простой XmlSerializer для достижения этой цели, следующим образом:

[Serializable] 
public class SerializationTest2 
{ 
    [XmlAttributeAttribute] 
    public string MemberA { get; set; } 
} 

[Test] 
public void TestSerialization() 
{ 
    var d2 = new SerializationTest2(); 
    d2.MemberA = "test"; 
    new XmlSerializer(typeof(SerializationTest2)) 
     .Serialize(File.OpenWrite(@"c:\temp\ser2.xml"), d2); 
} 
+0

Отлично! Спасибо за ваш точный ответ. = D – Aki24x

Смежные вопросы