Comment changer XML nom racine avec la Sérialisation XML?

Je suis en train de changer le nom de la racine lors de la sérialisation XML avec C#.

Il prend toujours le nom de la classe et non pas le nom, je suis en train de le mettre à l'.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {


            MyTest test = new MyTest();
            test.Test = "gog";

            List<MyTest> testList = new List<MyTest>() 
            {    
                test 
            }; 

            SerializeToXML(testList);
        }

        static public void SerializeToXML(List<MyTest> list)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(List<MyTest>));
            TextWriter textWriter = new StreamWriter(@"C:\New folder\test.xml");
            serializer.Serialize(textWriter, list);
            textWriter.Close();
        }
    }


}





using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;

namespace ConsoleApplication1
{

    [XmlRootAttribute(ElementName = "WildAnimal", IsNullable = false)]
    public class MyTest
    {
        [XmlElement("Test")]
        public string Test { get; set; }


    }
}

Résultat

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfMyTest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <MyTest>
    <Test>gog</Test>
  </MyTest>
</ArrayOfMyTest>

Il ne change pas à WildAnimal. Je ne suis pas sûr pourquoi. Je l'ai obtenu à partir d'un tutoriel.

Modifier @ Marc

Grâce. Je vois maintenant ce que vous faites semble tellement bizarre que vous avez à faire un wrapper autour d'elle. J'ai une autre question qu'advient-il si je voulais faire de ce format

<root>
   <element>
        <name></name>
   </element>
   <anotherElement>
       <product></product> 
   </anotherElement>
</root>

donc comme un des éléments imbriqués. Aurais-je à faire d'une nouvelle classe pour la deuxième partie et le coller dans la classe wrapper trop?

Re édition; cela dépend si vous baguette un anotherElement par product, ou un seul anotherElement avec perte de product éléments. Pour le dernier: [XmlArray] / [XmlArrayItem] - sinon, oui: un deuxième type.

OriginalL'auteur chobo2 | 2010-01-23