2016-09-15 5 views
0

개체 구조는 아래의 단순화 된 코드와 유사합니다. 국가와 자동차 모두 수업 일 필요가 있으며, 샘플에 포함되지 않은 코드로 인해 문자열 목록/배열을 사용할 수 없습니다. 나는 XML 직렬화하고 나중에 개체를 deserialize하고 싶다. 내가 차 브랜드는 지역 주민들 & 자동차에 제대로 저장되어있는 것을 볼 수 있습니다XML 개체 목록을 포함하는 개체의 목록을

의 라인을 따라 뭔가를 기대하지만

<?xml version="1.0" encoding="IBM437"?> 
<ArrayOfCountries xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Countries> 
    <Name>Germany</Name> 
    </Countries> 
    <Countries> 
    <Name>USA</Name> 
    </Countries> 
</ArrayOfCountries> 

:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Xml.Serialization; 

namespace XMLapp 
{ 
    public partial class Form1 : Form 
    { 
     List<Countries> Country = new List<Countries>(); 
     List<string> cars = new List<string>(); 

     public Form1() 
     { 
      InitializeComponent(); 

      cars.Add("Audi"); 
      cars.Add("BMW"); 
      cars.Add("Mercedes"); 
      addCountry("Germany", cars); 

      cars.Clear(); 
      cars.Add("Ford"); 
      cars.Add("Chevrolet"); 
      cars.Add("Jeep"); 
      addCountry("USA", cars); 

      TestXmlSerialize(); 
      Console.WriteLine("Generated list"); 
     } 

     void TestXmlSerialize() 
     { 
      XmlSerializer x = new XmlSerializer(Country.GetType()); 
      x.Serialize(Console.Out, Country); 
     } 

     void addCountry(string name, List<string> cars) 
     { 
      Countries newCountry = new Countries(); 
      newCountry.Name = name; 
      newCountry.AddCar(cars); 
      Country.Add(newCountry); 
     } 
    } 

    public class Countries 
    { 
     public string Name { get; set; } 
     List<Cars> car = new List<Cars>(); 

     public void AddCar(List<string> cars) 
     { 
      for (int i = 0; i < cars.Count; i++) 
      { 
       Cars newCar = new Cars(); 
       newCar.brand = cars[i]; 
       car.Add(newCar); 
      } 
     } 

     class Cars 
     { 
      public string brand; 
     } 

    } 
} 

이것은 다음과 같은 출력을 생성합니다 창,하지만 그들을 직렬화에 포함시키는 방법은 무엇입니까?

답변

1

XmlSerializer는 공용 필드와 속성 만 serialize합니다. '자동차'필드와 '자동차'클래스를 공개로 설정해야합니다.

질문에 올린 정확한 xml 레이아웃을 생성하지는 않지만, 개체를 직렬화 및 비 직렬화 할 수 있습니다.

+0

아 맞습니다! 고마워, 그게 해결 됐어. – Caliber

관련 문제