将对象序列化为 XML 时如何设置标签名称?
How can I set tag names when I serialize object to XML?
我试过这样做,但最终XML文档中的标签与属性名称相当,但不是我自定义的名称。
XDocument doc = new XDocument();
using (var writer = doc.CreateWriter())
{
// write xml into the writer
var serializer = new DataContractSerializer(myClassObject.GetType());
serializer.WriteObject(writer, sitemap);
}
[DataContract]
[XmlRoot(ElementName = "customRootTag")]
public class MyClass
{
[DataMember]
[XmlArray(ElementName = "customTag")]
[XmlArrayItem(ElementName = "customItemTag")]
public MyClassItem[] Items { get; set; }
public MyClass(List<MyClassItem> items)
{
Items = items.ToArray();
}
}
public class MyClassItem
{
[XmlElement(ElementName = "urlTag")]
public string Url { get; set; }
[XmlElement(ElementName = "dateTag")]
public DateTime Date { get; set; }
}
当我将 class 对象序列化为 XML 时,如何设置自己的自定义标签名称而不是 属性 名称?
[XmlElement]
用于 XmlSerializer
。对于 DataContractSerializer
,您想查看 [DataContract]
(针对类型)和 [DataMember]
(针对属性)。您可以在 DataMemberAttribute
.
上设置名称
但是! DataContractSerializer
在某些方面 不如 灵活 XmlSerializer
。如果您关心 xml 布局,我会推荐 XmlSerializer
。 DataContractSerializer
对于其他一些事情(例如对象跟踪)更好。优缺点。
由于您使用的是 DataContractSerializer
,请在 DataMember 属性上设置标签名称:
[DataMember(Name="YourName")]
我试过这样做,但最终XML文档中的标签与属性名称相当,但不是我自定义的名称。
XDocument doc = new XDocument();
using (var writer = doc.CreateWriter())
{
// write xml into the writer
var serializer = new DataContractSerializer(myClassObject.GetType());
serializer.WriteObject(writer, sitemap);
}
[DataContract]
[XmlRoot(ElementName = "customRootTag")]
public class MyClass
{
[DataMember]
[XmlArray(ElementName = "customTag")]
[XmlArrayItem(ElementName = "customItemTag")]
public MyClassItem[] Items { get; set; }
public MyClass(List<MyClassItem> items)
{
Items = items.ToArray();
}
}
public class MyClassItem
{
[XmlElement(ElementName = "urlTag")]
public string Url { get; set; }
[XmlElement(ElementName = "dateTag")]
public DateTime Date { get; set; }
}
当我将 class 对象序列化为 XML 时,如何设置自己的自定义标签名称而不是 属性 名称?
[XmlElement]
用于 XmlSerializer
。对于 DataContractSerializer
,您想查看 [DataContract]
(针对类型)和 [DataMember]
(针对属性)。您可以在 DataMemberAttribute
.
但是! DataContractSerializer
在某些方面 不如 灵活 XmlSerializer
。如果您关心 xml 布局,我会推荐 XmlSerializer
。 DataContractSerializer
对于其他一些事情(例如对象跟踪)更好。优缺点。
由于您使用的是 DataContractSerializer
,请在 DataMember 属性上设置标签名称:
[DataMember(Name="YourName")]