我可以使用XmlSerializer控制某些字段的序列化

时间:2011-12-23 18:10:07

标签: c# .net xml c#-4.0

我可以在c#中使用XmlSerializer来控制某些字段的序列化吗? Fox示例一个名为“Type”(字符串)的属性被序列化为别的而不是字符串。 提前谢谢。

3 个答案:

答案 0 :(得分:5)

您可以通过XmlElement / XmlAttribute注释控制一些内容 - 元素的名称,无论是属性还是完整的XML元素等等。但是,您无法更改直接输入。如果您需要支持任何类型的复杂序列化方案,XmlSerializer由于其许多限制而不是一个好的选择。您最好使用DataContractSerializer(请参阅WCF文档中的"Using Data Contracts"),或者甚至自己编写。

如果您只想更改生成的序列化数据的XML类型(例如,使用自定义XML类型或命名空间),可以使用XmlType属性执行此操作,但是将仅适用于您声明的类型而不是原始CLR类型(例如,您不能将字符串转换为整数或其他更复杂的类型)。

答案 1 :(得分:1)

我想你想要IXmlSerializable interface

您无法仅使用属性控制输入。您必须滚动自己的代码以序列化/反序列化该类。该界面允许您这样做。

答案 2 :(得分:1)

您可以通过XMLIgnore attribue控制要序列化的内容。这不会序列化使用此属性修饰的属性。

你也可以使用XMLType来管理XML序列化程序如何序列化类型,但这并不意味着你可以直接影响CLR类型。

您无法使用序列化更改CLR类型。