2017-12-20 14 views
-2

중첩 된 복합 개체에 XmlElements를 deserialize하는 방법이 있습니까? URL, Username 및 Password에 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

주셔서 감사 재생을위한 필드로이 클래스를 가진 XMLRoot("ServiceProviders")이 있는지 확인하지만 내가 지금 코딩이 있고 값은 속성이 객체에 null 인 방법입니다. – 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

당신의 예가 내가 원래 그것을 가지고 그것이 작동하고있는 방법입니다. deserialization 중에 이러한 값을 Properties 객체로 변환하려고했습니다. 기본적으로 이러한 요소를 가져 와서 복잡한 중첩 된 객체에 매핑합니다. 사용자 지정 직렬화 코드를 작성하지 않으면 가능하지 않다고 가정합니다. 귀하의 회신에 감사드립니다 – kamce

+0

@ kamce 왜 그렇게하고 싶습니까? – FakeCaleb

+0

현재 클래스가 정의되는 방식입니다. 나는 다른 클래스를 추가 할 필요없이 그 형식으로 강제 변환하려고 시도하고 있었고 기존 클래스에 매핑했다. – kamce