2017-11-20 15 views
1

이 방법을 시도했지만 최종 XML 문서의 태그는 속성의 이름과 유사하지만 내 사용자 정의 이름은 비교할 수 없습니다.개체를 XML로 serialize 할 때 태그 이름을 설정하는 방법은 무엇입니까?

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로 serialize 할 때 속성 이름 대신 사용자 지정 태그 이름을 어떻게 설정할 수 있습니까?

답변

0

[XmlElement]XmlSerializer입니다. DataContractSerializer의 경우 [DataContract] (유형과 비교) 및 [DataMember] (속성과 비교)을보고 싶습니다. DataMemberAttribute에 이름을 설정할 수 있습니다.

그러나! DataContractSerializer보다 유연하지 않습니다.은 어떤면에서 XmlSerializer보다 작습니다. xml 레이아웃에 관심이 있다면 XmlSerializer을 추천합니다. DataContractSerializer은 다른 것들 (객체 추적 등)에 더 좋습니다. 장점과 단점. 당신이 DataContractSerializer을 사용하고 있기 때문에

0

의 DataMember를 속성에 태그 이름을 설정합니다

[DataMember(Name="YourName")]