zoukankan      html  css  js  c++  java
  • NET(C#):XmlArrayItem特性和XmlElement特性在序列化数组的差别

    比如这样一个类,我们用XmlArrayItem特性标明数组内出现的元素类型:

    public class a
    {
        [XmlArrayItem(Type = typeof(int)), XmlArrayItem(Type = typeof(Guid)), XmlArrayItem(Type = typeof(string))]
        public object[] arr = new object[] { 12, "hehe", Guid.NewGuid() };
    }

    序列化的XML是:

    <a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <arr>
            <int>12</int>
            <string>hehe</string>
            <guid>291b7cba-fc32-4019-bb22-d5d61643b6a7</guid>
        </arr>
    </a>

    字段arr的名称是以XML元素写入的。

    但如果把XmlArrayItem都改成XmlElement特性:

    public class a
    {
        [XmlElement(Type = typeof(int)), XmlElement(Type = typeof(Guid)), XmlElement(Type = typeof(string))]
        public object[] arr = new object[] { 12, "hehe", Guid.NewGuid() };
    }

    序列化的XML是这样:

    <a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <int>12</int>
        <string>hehe</string>
        <guid>5e7da5a0-d513-47b7-ae8f-80b404a9b0d4</guid>
    </a>

    并没有arr字段的名称!

    注意你可以用XmlArrayItem或者XmlElement特性的ElementName来控制对应类型的XML元素名称。

  • 相关阅读:
    在jQuery中.bind() .live() .delegate() .on()的区别
    jquery小结测试题
    揭秘子类构造函数执行过程
    过滤器
    实现AJAX的基本步骤
    AJAX 原生态
    java工程师需要学什么
    Java进阶之路
    git入门大全
    轻松学JVM
  • 原文地址:https://www.cnblogs.com/benpao/p/8867367.html
Copyright © 2011-2022 走看看