2011-08-24 6 views
2

힐리오,XML 직렬화 - collection 속성

이 코드 :

[Serializable] 
[XmlRoot("A")] 
public class A 
{ 
    public B B { get; set; } 

    public void Save() 
    { 
     string settingsFilePath = string.Format("test.xml"); 
     XmlSerializer serializer = new XmlSerializer(typeof(A)); 
     TextWriter writer = new StreamWriter(settingsFilePath); 
     XmlSerializerNamespaces ns = new XmlSerializerNamespaces(new XmlQualifiedName[] { new XmlQualifiedName(string.Empty) }); 
     serializer.Serialize(writer, this, ns); 
     writer.Close(); 
    } 
} 

.

public class B 
{ 
    [XmlAttribute("c")] 
    public string C { get; set; } 

    public List<D> D { get; set; } 
} 

.

public class D 
{ 
    [XmlAttribute("e")] 
    public string E { get; set; } 
} 

.

<?xml version="1.0" encoding="utf-8"?> 
<A> 
    <B c="c"> 
    <D> 
     <D e="e" /> 
     <D e="e" /> 
     <D e="e" /> 
    </D> 
    </B> 
</A> 

같은 구조로 XML을 생성 할 수있는 방법이 있나요 :

A a = new A(); 
a.B = new B(); 
a.B.C = "c"; 
a.B.D = new List<D>(); 
D d = new D(); 
d.E = "e"; 
a.B.D.Add(d); 
a.B.D.Add(d); 
a.B.D.Add(d); 
a.Save(); 

는 XML 파일을 생성합니다 : 클래스 B의

<?xml version="1.0" encoding="utf-8"?> 
<A> 
    <B c="c"> 
    <D e="e" /> 
    <D e="e" /> 
    <D e="e" /> 
    </B> 
</A> 
+0

확인, XMLELEMENT는 작업을했다 – anth

답변

4

장식

[XmlElement("D")] 
public List<D> D { get; set; }