请考虑以下课程:
[Serializable]
public class MyClass
{
[XmlAttribute("id")]
public int ID { get; set; }
[XmlArrayItem("User")]
public List<string> Users { get; set; }
[XmlArrayItem("Role")]
public List<string> Roles { get; set; }
}
现在,我要转换类定义,以获取该类实例的XML序列化的预期结果:
<MyClass id="123">
<Access>
<User>User A</User>
<User>User B</User>
<User>User C</User>
<Role>Role A</Role>
<Role>Role B</Role>
<Role>Role C</Role>
</Access>
</MyClass>
此外,它必须可以反序列化。我尝试将[Xml Array("Access")]
属性同时应用于Users
和Roles
属性,但是发生了InvalidOperationException
。
如果不实施IXmlSerializable
就能解决问题,那就太好了。
答案 0 :(得分:1)
看起来您只需要创建一个“访问”类即可嵌套您的用户/角色。
[XmlRoot(ElementName="Access")]
public class Access {
[XmlElement(ElementName="User")]
public List<string> User { get; set; }
[XmlElement(ElementName="Role")]
public List<string> Role { get; set; }
}
[XmlRoot(ElementName="MyClass")]
public class MyClass {
[XmlElement(ElementName="Access")]
public Access Access { get; set; }
[XmlAttribute(AttributeName="id")]
public string Id { get; set; }
}