2017-12-20 23 views
-2

ネストされた複合オブジェクトにXmlElementsを逆シリアル化する方法はありますか? URL、ユーザー名、およびパスワードにServiceProvider.Propertiesオブジェクトを設定しようとしています。現在、すべての値はnullです。ネストされた複合型へのXmlElementsの非直列化

public class ServiceProvider 
{ 
    [XmlElement("ID")] 
    public SettingId SettingId { get; set; } 

    public Properties Properties { get; set; }  
} 

public class Properties 
{ 
    [XmlElement] 
    public string Username { get; set; } 

    [XmlElement] 
    public string URL { get; set; } 

    [XmlElement] 
    public string Password { get; set; } 
} 

public class SettingId 
{ 
    [XmlElement] 
    public string Key { get; set; } 

    [XmlElement] 
    public string Domain { get; set; } 

    [XmlElement] 
    public string Type { get; set; } 
} 
<ServiceProviders> 
    <ServiceProvider> 
     <ID> 
      <Key>Key</Key> 
      <Domain>Domain</Domain> 
      <Type>Type</Type> 
     <ID> 
     <URL>URL</URL> 
     <Username>User</Username>  
     <Password>Password</Password> 
    </ServiceProvider> 
</ServiceProviders> 
+0

あなたのリプレイのおかげでそれが、私はそれが今でコード化され、値がプロパティにnullのオブジェクトを持っている方法ですが、このクラスを持っているXMLRoot("ServiceProviders")を持っていることを確認してください。 – kamce

+0

あなたのXMLは無効です。 Btw '' – FakeCaleb

答えて

0

はあなたのXMLには、 'プロパティ' のタグがありません。代わりにそれを削除し、そのクラスのフィールドをServiceProviderクラスに追加してください。あなたがフィールドとして

public class ServiceProvider 
{ 
    [XmlElement("ID")] 
    public SettingId SettingId { get; set; } 

    [XmlElement] 
    public string Username { get; set; } 

    [XmlElement] 
    public string URL { get; set; } 

    [XmlElement] 
    public string Password { get; set; } 
} 
+0

あなたの例は、私が元々それを持っていて、それが働いていた方法です。デシリアライズ時にこれらの値をPropertiesオブジェクトに変換したいと考えていました。基本的にこれらの要素を取り出し、それらを複雑なネストされたオブジェクトにマッピングします。私はそれがカスタム非直列化コードを書かなければ不可能だと仮定します。ご返信ありがとうございます – kamce

+0

@kamceなぜあなたはそれをしたいですか? – FakeCaleb

+0

現在のクラスが定義されている方法です。私は別のクラスを追加しなくても、そのフォーマットに強制しようとしていて、既存のクラスにマップしていました。 – kamce

関連する問題