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