2015-05-06 38 views
0

我試圖使用序列化XmlSerializer的XmlSerializer的 - 元素名稱爲泛型列表類

我期待着得到這樣一個對象到XML:

<User> 
    <username>administrator</username> 
    <email>[email protected]</email> 
     <roles> 
      <whatever id="D3DCBCDA-AD61-4764-B5A1-057D654F1C26"> 
       <role>admin</role> 
      </whatever> 
     </roles> 
</user> 

但相反我得到這個:

<User> 
    <username>administrator</username> 
    <email>[email protected]</email> 
    <roles> 
     <RoleDTO id="D3DCBCDA-AD61-4764-B5A1-057D654F1C26"> 
      <role>admin</role> 
     </RoleDTO> 
    </roles> 
</User> 

代碼

XmlSerializer x = new System.Xml.Serialization.XmlSerializer(xml.GetType()); 
XmlSerializer xsSubmit = new XmlSerializer(typeof(UserDTO)); 
StringWriter sww = new StringWriter(); 
XmlWriter writer = XmlWriter.Create(sww); 
xsSubmit.Serialize(writer, user); 
var xmll = sww.ToString(); // My xml 


List<RoleDTO> rl = new List<RoleDTO>(); 

     rl.Add(new RoleDTO { roleId = new Guid("D3DCBCDA-AD61-4764-B5A1-057D654F1C26"), role = "admin" }); 


UserDTO user = new UserDTO 
      { 
       username = "administrator", 
       email = "[email protected]", 
       role = rl 
      }; 

型號

namespace Model.DTO 
{ 
    [XmlRoot("User")] 
    public class UserDTO 
    { 
     public string username { get; set; } 
     public string email { get; set; } 
     public List<RoleDTO> role { get; set; } 
    } 

    public class RoleDTO 
    { 
     [XmlAttribute("Id")] 
     public Guid roleId { get; set; } 
     public string role { get; set; } 
    } 
} 

我試圖來裝飾類RoleDTO與[XmlRoot("whatever")][XmlElement("whatever")]沒有更迭。

任何想法?

回答

1

您需要

[XmlElement("whatever")] 

不是RoleDTO類裝飾用戶DTO類的角色屬性。

public class UserDTO 
{ 
    public string username { get; set; } 
    public string email { get; set; } 
    [XmlElement("whatever")] 
    public List<RoleDTO> role { get; set; } 
} 
+0

似乎我省略了最明顯的東西:)謝謝先生 –

相關問題