2017-11-20 12 views
1

私はこのようにしましたが、最終的な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; } 
} 

クラスオブジェクトをXMLにシリアル化するときに、プロパティ名の代わりに独自のカスタムタグ名を設定するにはどうすればよいですか?

答えて

0

[XmlElement]は、XmlSerializerです。 DataContractSerializerについては、[DataContract](タイプに対して)と[DataMember](プロパティに対して)を見たいと思っています。 DataMemberAttributeに名前を設定できます。

ただし、 DataContractSerializerより柔軟ではありませんはいくつかの点でXmlSerializerよりも若干です。 xmlレイアウトを気にするなら、私はXmlSerializerをお勧めします。 DataContractSerializerは、他のいくつかのもの(オブジェクトトラッキングなど)にとっては優れています。長所と短所あなたがDataContractSerializerを使用しているので

0

、DataMemberを属性にタグ名を設定します。

[DataMember(Name="YourName")] 
関連する問題