C# 将对象序列化为XML时,如何设置标记名?
我试着这样做,但最终XML文档中的标记与属性的名称相似,但与我的自定义名称不同C# 将对象序列化为XML时,如何设置标记名?,c#,xml,serialization,linq-to-xml,C#,Xml,Serialization,Linq 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(
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; }
}
XDocument doc=new XDocument();
使用(var writer=doc.CreateWriter())
{
//将xml写入编写器
var serializer=新的DataContractSerializer(myClassObject.GetType());
serializer.WriteObject(编写器、站点地图);
}
[数据合同]
[XmlRoot(ElementName=“customRootTag”)]
公共类MyClass
{
[数据成员]
[XmlArray(ElementName=“customTag”)]
[XmlArrayItem(ElementName=“customItemTag”)]
公共MyClassItem[]项{get;set;}
公共MyClass(列表项)
{
Items=Items.ToArray();
}
}
公共类MyClassItem
{
[xmlement(ElementName=“urlTag”)]
公共字符串Url{get;set;}
[xmlement(ElementName=“dateTag”)]
公共日期时间日期{get;set;}
}
将类对象序列化为XML时,如何设置自己的自定义标记名而不是属性名
[xmlement]
用于XmlSerializer
。对于DataContractSerializer
,您需要查看[DataContract]
(针对类型)和[DataMember]
(针对属性)。您可以在DataMemberAttribute
上设置名称
然而
DataContractSerializer
在某些方面不如XmlSerializer
灵活。如果您关心xml布局,我建议您使用XmlSerializer
DataContractSerializer
更适用于其他一些事情(例如,对象跟踪)。利弊。[xmlement]
用于XmlSerializer
。对于DataContractSerializer
,您需要查看[DataContract]
(针对类型)和[DataMember]
(针对属性)。您可以在DataMemberAttribute
上设置名称
然而
DataContractSerializer
在某些方面不如XmlSerializer
灵活。如果您关心xml布局,我建议您使用XmlSerializer
DataContractSerializer
更适用于其他一些事情(例如,对象跟踪)。优点和缺点。由于您使用的是DataContractSerializer
,请在DataMember属性上设置标记名:
[DataMember(Name="YourName")]
由于您使用的是
DataContractSerializer
,请在DataMember属性上设置标记名:
[DataMember(Name="YourName")]