So ändern Sie die XML-root-Namen mit der XML-Serialisierung?

Ich versuche, ändern Sie den root-name -, wenn dabei die XML-Serialisierung in C#.

Er nimmt immer den Namen der Klasse und nicht der name, den ich bin versucht, es mit.

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; }


    }
}

Ergebnis

<?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>

Es nicht ändern, es WildAnimal. Ich bin nicht sicher, warum. Ich habe das aus einem tutorial.

Bearbeiten @ Marc

Dank. Ich sehe jetzt, was Ihr tun scheint nur so seltsam, dass Sie haben, um einen wrapper um ihn herum. Ich habe noch eine Frage, was passiert, wenn ich wollte, um dieses format

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

so wie eine verschachtelte Elemente. Würde ich eine neue Klasse für den zweiten Teil und stick, die in der wrapper-Klasse zu?

  • Re edit; es hängt davon ab, ob Sie den Zauberstab ein anotherElement pro product oder eine einzelne anotherElement mit Verlust der product Elemente. Für letzteres: [XmlArray] / [XmlArrayItem] - ansonsten ja: eine zweite geben.
InformationsquelleAutor chobo2 | 2010-01-23
Schreibe einen Kommentar