c# - 如何反序列化具有不同类型属性的 XML 数组
问题描述
我有这个要反序列化并稍后重新序列化的 XML:
<SecurityCustomizationData xmlns="http://schemas.datacontract.org/2004/07/Microsoft.Dynamics.AX.Security.Management" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<_x003C_CustomizationsForTypeList_x003E_k__BackingField>
<BaseRepositoryCustomizations i:type="RepositoryCustomizationsOfAxSecurityRoleNcCATIYq">
</BaseRepositoryCustomizations>
<BaseRepositoryCustomizations i:type="RepositoryCustomizationsOfAxSecurityDutyNcCATIYq">
</BaseRepositoryCustomizations>
<BaseRepositoryCustomizations i:type="RepositoryCustomizationsOfAxSecurityPrivilegeNcCATIYq">
</BaseRepositoryCustomizations>
</_x003C_CustomizationsForTypeList_x003E_k__BackingField>
</SecurityCustomizationData>
除了复制这个问题之外,还有更多内容就足够了。我已经尝试过“将 XML 粘贴到类”方法,但是序列化程序无法克服类型属性RepositoryCustomizationsOfAxSecurityRoleNcCATIYq
等。
我试图根据该代码编写自己的类,但它甚至不会尝试反序列化最里面的元素。
[XmlRoot(Namespace = "http://schemas.datacontract.org/2004/07/Microsoft.Dynamics.AX.Security.Management")]
public class SecurityCustomizationData
{
[System.Xml.Serialization.XmlArrayAttribute("<CustomizationsForTypeList>k__BackingField")]
[XmlArrayItem(Type = typeof(RoleRepoCust))]
[XmlArrayItem(Type = typeof(DutyRepoCust))]
[XmlArrayItem(Type = typeof(PrivilegeRepoCust))]
public BaseRepositoryCustomizations[] CustomizationsForTypeListk__BackingField
{
get;
set;
}
}
public class BaseRepositoryCustomizations
{
}
[XmlType(TypeName = "RepositoryCustomizationsOfAxSecurityRoleNcCATIYq", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public class RoleRepoCust : BaseRepositoryCustomizations
{
}
[XmlType(TypeName = "RepositoryCustomizationsOfAxSecurityDutyNcCATIYq", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public class DutyRepoCust : BaseRepositoryCustomizations
{
}
[XmlType(TypeName = "RepositoryCustomizationsOfAxSecurityPrivilegeNcCATIYq", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public class PrivilegeRepoCust : BaseRepositoryCustomizations
{
}
我发现的所有关于 XmlArrayItemAttribute 的示例都使用不同的元素名称来选择正确的类。我也尝试对项目只使用一个类,但是我遇到了与生成的类相同的问题:i:type 属性导致错误。
解决方案
推荐阅读
- javascript - 如何在一行中默认导出命名导入?
- javascript - 如何删除括号和括号内的内容?
- python - 如何以相反的顺序从生成器中获取元素?
- javascript - 是否可以在 Node.js 上使用 js 资源或 react Native?
- c - 如何使用scanf()和while循环将字符串从stdin读入c编程中的二维数组?
- regex - 如何匹配部分精确和部分可变的文本
- backup - 小团队如何对源代码进行安全备份?
- python - 如何更改 odoo 12 中的 many2one 值字段名称?
- r - r-markdown - 动态多行标题与第二行相同
- java - Jersey 休息请求通用类型