Сериализация XML C # .net2.0 - PullRequest
1 голос
/ 13 января 2011

У меня есть этот элемент в моем классе

[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 ]

2 голосов
/ 13 января 2011

Добавьте атрибут над вашей переменной-членом

 [XmlAttribute("count")]

EDIT

Это было рассмотрено в предыдущем вопросе о SO

Как добавить атрибут в элемент XmlArray (Сериализация XML)?

0 голосов
/ 13 января 2011

Вы можете заменить тип String на тип 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{;}
        }
    }
0 голосов
/ 13 января 2011

Одним из способов было бы введение пользовательского универсального класса коллекции, который сериализует себя так, как вы хотите.

...