我正在尝试将对象序列化为xml。序列化程序似乎将所有数据成员序列化为子项,但我希望将所有成员序列化为属性,而不是子项。
这是一个代码示例:
[DataContract]
public class MyDataClass
{
[DataMember]
int foo = 24;
[DataMember]
string bar = "brabrabra";
}
当我使用DataContractSerializer:
时,这将按照以下xml序列化<MyDataClass xmlns="..." xmlns:i="...">
<foo>24</foo>
<bar>brabrabra</bar>
</MyDataClass>
但是,我想以某种方式将其序列化为xml:
<MyDataClass xmlns="..." xmlns:i="..." foo="24" bar="brabrabra" />
有没有办法像这样序列化?或者,我应该编写自己的序列化器来实现它吗? 作为参考,我在这个示例中使用DataContract序列化程序,但是如果有更好的XmlSerializer,我可以将其更改为普通的XmlSerializer。
希望有人知道这件事。
秋
答案 0 :(得分:3)
看看XMLAttribute。仅适用于XMLSerializer。
答案 1 :(得分: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);
}
答案 2 :(得分:0)
将[XmlAttribute]
放在foo
和bar
声明之前。
很好的参考:http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx