XmlSerializer序列化
学习笔记,记一下,有再加上:
要序列化的类要加 Serialiazable 标记,如果要更改类在xml中的显示名称、命名空间等属性,可以XmlType 标记。
对于下面这种属性,可以把 Service 类的 name 属性加上 XmlAttribute 标记,那么此时 name 属性的值就会作为 Service 节点的 name 属性值。
<Service name="map">
对于有前缀的节点或属性。如下面这种。实现方法是在 XmlSerializer.Serialize(stream<或其它>, object, XmlSerializeNamespaces)方法里的 XmlSerializeNamespaces 来设置。把简称和命名空间加进 XmlSerializeNamespaces ,同时把节点或属性的命名空间设置为加入 XmlSerializeNamespaces 里的命名空间。另外 XmlElement 或 XmlAttribute 的Form属性设置为Qualified,就会显示前缀了。
<ows:Service xlink:name="http://babala.com/">
上面说道的 Qualified 就是System.Xml.Schema.XmlSchemaForm的一个枚举值,该属性表示是否把该要素或属性的名称显示为 限定的名称,也就是带不带名称空间限定的名称的意思。
对于下面这种情况,实现列表。可以在 Service 类中定义一个列表 List<string> Keys,然后添加 XmlElement 标记,并设置 ElementName 属性为Key,这样就会在 Service 节点的加上List 中的节点作为直接子节点。
<Service> <Key>Get</Key> <Key>Post</Key> </Service>