2016-10-31 8 views
0

I는 다음과 같습니다 클래스가 있습니다상속 부모 요소 이름 C# XmlSerializer를

public class CustomerType 
{ 
    public string Address {get; set;} 
    public string City {get; set;} 
} 

그리고이 같은 다른 클래스 :

public class CustomerInfo 
{ 
     public CustomerType Sender {get; set;} 
     public CustomerType Reciever {get; set;} 
} 

을 나는 XmlSerializer를을 구성하려면 어떻게 그래서 내가 다음 XML을 얻으시겠습니까?

<CustomerInfo> 
    <Sender> 
     <SenderAddress></SenderAddress> 
     <SenderCity></SenderCity> 
    </Sender> 
    <Receiver> 
     <ReceiverAddress></ReceiverAddress> 
     <ReceiverCity></ReceiverCity> 
    </Receiver> 
</CustomerInfo> 

내가 작업을 오전 API

는 CustomerType 요소의 이름이 때 자식 요소 이름에 접두어로 연재됩니다 있다는 것입니다이 형식을 필요로합니다.

+1

입니다보십시오 :'보낸 사람 *'필드와 수신기 '와 다른 하나 하나 *'. – aghidini

답변

0

은, 어쩌면이 다른`Address` 클래스를 쉽게 만들 수 난 당신이 단순히 그것을 할 수 있다고 생각하지 않습니다이

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Xml; 
using System.Xml.Serialization; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     const string FILENAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 

      CustomerInfo info = new CustomerInfo() 
      { 
       Sender = new CustomerSender() 
       { 
        Address = "123", 
        City = "North Pole" 
       }, 
       Reciever = new CustomerReceiver() 
       { 
        Address = "456", 
        City = "South Pole" 
       } 
      }; 

      XmlSerializer serializer = new XmlSerializer(typeof(CustomerInfo)); 

      StreamWriter writer = new StreamWriter(FILENAME); 
      serializer.Serialize(writer, info); 
      writer.Flush(); 
      writer.Close(); 
      writer.Dispose(); 

     } 
    } 
    [XmlRoot("Sender")] 
    public class CustomerSender 
    { 
     [XmlElement("SenderAddress")] 
     public string Address { get; set; } 

     [XmlElement("SenderCity")] 
     public string City { get; set; } 
    } 
    [XmlRoot("Receiver")] 
    public class CustomerReceiver 
    { 
     [XmlElement("ReceiverAddress")] 
     public string Address { get; set; } 

     [XmlElement("ReceiverCity")] 
     public string City { get; set; } 
    } 
    public class CustomerInfo 
    { 
     [XmlElement("Sender")] 
     public CustomerSender Sender { get; set; } 

     [XmlElement("Receiver")] 
     public CustomerReceiver Reciever { get; set; } 
    } 
}