C# 一个节点下的不同属性
我有一个对象,我正在使用xml序列化程序进行序列化。是否可以本质上插入任意子根节点,并将某些属性分配给该根节点 一些属性 公共int ID{get;set;}C# 一个节点下的不同属性,c#,xml-serialization,C#,Xml Serialization,我有一个对象,我正在使用xml序列化程序进行序列化。是否可以本质上插入任意子根节点,并将某些属性分配给该根节点 一些属性 公共int ID{get;set;} public object ActivityType { get; set; } public int ObjectId { get; set; } public string RelatedObjects { get; set; } public string Parameters { get; s
public object ActivityType { get; set; }
public int ObjectId { get; set; }
public string RelatedObjects { get; set; }
public string Parameters { get; set; }
public string Tag { get; set; }
public List<Condition> Conditions { get; set; }
public bool OnlySaveIfValid { get; set; }
现在,当我用xml serialize序列化它时,我得到:
<?xml version="1.0" encoding="utf-16"?>
<FNActivity>
<ID>0</ID>
<ObjectId>0</ObjectId>
<Conditions>
<Condition>
<Critical>false</Critical>
<ValidIf>false</ValidIf>
<IsValid>false</IsValid>
</Condition>
<Condition>
<Critical>false</Critical>
<ValidIf>false</ValidIf>
<IsValid>false</IsValid>
</Condition>
</Conditions>
<OnlySaveIfValid>false</OnlySaveIfValid>
</FNActivity>
我想要得到的Xml是:
<?xml version="1.0" encoding="utf-16"?>
<FNActivity>
<ID>0</ID>
<ObjectId>0</ObjectId>
**<VALIDATION>
<Conditions>
<Condition>
<Critical>false</Critical>
<ValidIf>false</ValidIf>
<IsValid>false</IsValid>
</Condition>
<Condition>
<Critical>false</Critical>
<ValidIf>false</ValidIf>
<IsValid>false</IsValid>
</Condition>
</Conditions>
<OnlySaveIfValid>false</OnlySaveIfValid>
**</VALIDATION>
</FNActivity>
我认为最简单的方法是创建一个验证类/对象来存储条件。您可以实现IXmlSerializable来手动执行此操作,但这似乎有些过分。最好是创建一个与XML模型密切匹配的对象模型,然后将序列化问题与应用程序问题分开。@ChrisSinclair如果这是唯一的实例,我有点同意,然而,在许多领域中,我们正在从使用人工编写的XML SCEHMA和以编程方式编写的XML模式转换过来,因此可读性仍然是需要的。而且,以我想要的方式对代码进行序列化似乎不是正确的解决方案。那么,正确的解决方案是相对的。您使用的是XmlSerializer类,因此,一般来说,您只能按预期的方式使用它;从这个意义上说,正确的解决方案是分离您的关注点,并按照XmlSerializer认为正确的方式构建数据模型。如果您使用两个不同的模式来连接到同一个底层数据模型,那么将序列化关注点与应用程序逻辑关注点分离就更加重要了。正如我所建议的,您仍然可以利用IXmlSerializable并手动插入节点。IXmlSerializable…我将对此进行研究。谢谢