序列化XML C#.net2.0

时间:2011-01-13 09:17:56

标签: c# xml-serialization

我在班上有这个元素

[XmlArray("photos")]         
public List<zPhoto> EntityPhotos;

当我序列化课程时,我得到了这个:

<photos>
    <zPhoto id="73102" type="a" />
    <zPhoto id="73102" type="b"/>
    <zPhoto id="73105" type="a" />
    <zPhoto id="73105" type="b" />
</photos>

为了简化xpath查询,我想添加一个新的指令,它会给我一个像

这样的结果
<photos count="2" >
    <zPhoto id="73102" type="a" />
    <zPhoto id="73102" type="b"/>
    <zPhoto id="73105" type="a" />
    <zPhoto id="73105" type="b" />
</photos>

我想添加trival属性名称并设置值。有可能吗?

3 个答案:

答案 0 :(得分:2)

在成员变量

上方添加属性
 [XmlAttribute("count")]

修改

上一个关于SO

的问题已经涵盖了这一点

How do I add a attribute to a XmlArray element (XML Serialization)?

答案 1 :(得分:0)

一种方法是引入一个自定义泛型集合类,以您想要的方式自行序列化。

答案 2 :(得分:-2)

您可以用ZPhotos类型替换字符串类型。

[XmlRoot("EntityPhotos")]
    public class EntityPhotos
    {
        private List<String> _photos;

        public EntityPhotos()
        {
            _photos = new List<string>
            {
                "One.jpg",
                "Two.png",
                "Three.gif"
            };
        }

        [XmlElement("Photos")]
        public String[] Photos
        {
            get
            {
                return _photos.ToArray();
            }

            set  {;}

        }

        [XmlAttribute("Count")]
        public Int32 Count
        {
            get
            {
                if (Photos != null)
                    return Photos.Length;
                else
                    return 0;
            }

            set{;}
        }
    }