Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将对象序列化为XML时,如何设置标记名?_C#_Xml_Serialization_Linq To Xml - Fatal编程技术网

C# 将对象序列化为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(

我试着这样做,但最终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; }
}
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")]