2016-10-31 7 views
0

私はこのようになりますクラスがあります。継承親要素名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を設定するにはどうすればよいようにI次のXMLを入手しますか?

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

私が働いているAPIは、シリアライズ時にCustomerType要素の名前は、子要素名に接頭辞を取得しますということである、このフォーマットが必要です。

+1

をお試しください:'送信者* 'フィールドと'レシーバーと他の1と1を* '。 – aghidini

答えて

0

私は多分それは2つの異なる `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; } 
    } 
}