2014-03-03 1 views
0

XML 루트를 serialize하지 않고 아래 클래스를 serialize 할 수있는 방법이 있습니까? serialize를 XMLArray에서 시작하고 싶습니까?사용자 지정 클래스의 일부 serialize C#

추가 정보가 필요하면 알려주십시오.

[XMLRoot] 
public class Customers 
{ 
    List<Customer> _Customers = new List<Customer>(); 

    [XmlArray("Customers")] 
    [XmlArrayItem("Customer")] 
    public List<Customer> Customers 
    { 
     get { return _Customers; } 
     set { _Customers = value; } 
    } 
} 
public class Customer 
{ 
    string _test1; 
    string _test2; 

    public string test1 
    { 
     get { return _test1; } 
     set { _test1 = value; } 
    } 

    public string test2 
    { 
     get { return _test2; } 
     set { _test2 = value; } 
    } 

} 
+0

왜 그런가요? 그게 너를 괴롭히는거야? – elyashiv

+0

Customers 대신 Customers.Customers를 serialize해야합니다. –

답변

0

XML 문서에는 일종의 루트 요소가 필요합니다. 루트가 고객이되기를 원하지 않습니까? 그런 다음 고객 클래스를 XmlRoot로 표시하지 말고 고객 목록을 포함 할 것인지 묻습니다 (예 :

).
class Program 
{ 
    static void Main(string[] args) 
    { 
     Shop shop = new Shop() 
     { 
      Name = "Jack's Shop", 
      Customers = new List<Customer>() 
      { 
       new Customer() { FirstName = "Maynard", LastName = "Keating" }, 
      } 
     }; 

     XmlSerializer xmls = new XmlSerializer(typeof(Shop)); 

     using (FileStream fs = File.Create("JacksShop.xml")) 
      xmls.Serialize(fs, shop); 
    } 
} 

[XmlRoot] 
public class Shop 
{ 
    public string Name { get; set; } 
    public List<Customer> Customers { get; set; } 
} 

public class Customer 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 
관련 문제