我尝试这样做,但最终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; }
}
当我将类对象序列化为XML时,如何设置自己的自定义标记名称而不是属性名称?
答案 0 :(得分:0)
[XmlElement]
适用于XmlSerializer
。对于DataContractSerializer
,您希望查看[DataContract]
(针对类型)和[DataMember]
(针对属性)。您可以在DataMemberAttribute
上设置名称。
然而! DataContractSerializer
在某些方面不太灵活而不是XmlSerializer
。如果您关心xml布局,我建议XmlSerializer
。对于其他一些事情(例如,对象跟踪),DataContractSerializer
会更好。优点和缺点。
答案 1 :(得分:0)
由于您使用的是DataContractSerializer
,请在DataMember属性上设置标记名称:
[DataMember(Name="YourName")]