繁体   English   中英

如何在C#中将类成员序列化为xml的属性

[英]How to serialize class members as attributes to xml in C#

我正在尝试将对象序列化为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或其他。

希望有人知道这一点。

亚希

看看XMLAttribute 但是仅适用于XMLSerializer。

您可以使用简单的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);
}

[XmlAttribute]放在foobar声明之前。

优秀参考文献: http : //msdn.microsoft.com/zh-cn/library/system.xml.serialization.xmlserializer.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM