Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > XML сериализация


Автор: RastaDja 11.8.2011, 13:26
   Доброго времени суток!
   Никак не могу побороть такую задачу:
Нужно сериализовать в xml (с помощью XmlSerializer) такой класс
Код

//[XmlRoot("results")]
    public class Results
    {
    //    [XmlElement(ElementName = "parameters")]
        public Params parameters;

        public Results()
        {
            parameters= new Params2();
        }
    }

    public class Param
    {
    //    [XmlAttribute]
        public String Name;
     //   [XmlIgnore]
        public String Value;
       
        public Param(String _name, String _value = "")
        {
            Name = _name;
            Value = _value;
        }
    }

    public class Params
    {
        private ArrayList ParamList;
        public Params()
        {
            ParamList = new ArrayList();
        }
        public void AddParam(String _paramName, String _paramValue = "")
        {
            ParamList.Add(new Param2(_paramName, _paramValue));
        }

     //   [XmlElement]
        public Param[] Params
        {
            get
            {
                Param[] Params = new Param[ParamList.Count];
                ParamList.CopyTo(Params);
                return Params;
            }

            set
            {
                if (value == null)
                    return;
                Param[] Params = (Param[])value;
                ParamList.Clear();
                foreach (Param p in Params)
                    ParamList.Add(p);
            }
        }
    }

я хочу сериализовать это в xml вида
Код

<results>
   <parameters>
      <Param Name="name1" Value="Val1"></Param>
      <Param Name="name2" Value="Val2"></Param>
      <Param Name="name3" Value="Val3"></Param>
   </parameters>
</results>

Все мои попытки ничего не дали.
Помогите разобратся.
Спасибо.

Автор: RastaDja 11.8.2011, 14:03
   Всегда так smile : целый день парился, решил написать на форум, написал, и через 15мин сам все решил.
   Может пригодится кому smile ?
Код

    public class Res
    {
        [XmlElement("parameters")]
        public Params s = new Params();
    }

    public class Params
    {
        [XmlIgnore]
        public ArrayList arr = new ArrayList();

        [XmlElement("parameter")]
        public Pa[] parameters
        {
            get
            {
                Pa[] Params = new Pa[arr.Count];
                arr.CopyTo(Params);
                return Params;
            }

            set
            {
                if (value == null)
                    return;
                Pa[] Params = (Pa[])value;
                arr.Clear();
                foreach (Pa p in Params)
                    arr.Add(p);
            }
        }
    }
    
    public class Pa
    {
        [XmlAttribute("Name")]
        public string Name = "";
        [XmlAttribute("Val")]
        public string Val = "";
       
        public Pa(String N, String v)
        {
            Name = N;
            Val = v;
        }

        public Pa()
        {
        }
    }

Код

<?xml version="1.0" encoding="utf-8" ?> 
<Res xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <parameters>
        <parameter Name="param1" Val="val1" Capt="" /> 
        <parameter Name="param1" Val="val1" Capt="" /> 
   </parameters>
</Res>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)