Próbuję zmienić nazwę root podczas wykonywania serializacji XML za pomocą C#.Jak zmienić nazwę katalogu głównego XML za pomocą Serializacji XML?
Zawsze bierze nazwę klasy, a nie nazwę, którą próbuję ustawić.
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; }
}
}
Wynik
<?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>
Nie zmienia go wildanimal. Nie jestem pewien, dlaczego. Mam to z samouczka.
Edit @ Marc
Dzięki. Teraz widzę, co robisz po prostu wydaje się tak dziwne, że trzeba zrobić opakowanie wokół niego. Mam jeszcze jedno pytanie, co się stanie, jeśli chcę utworzyć ten format, tak jak elementy zagnieżdżone. Czy będę musiał stworzyć nową klasę dla drugiej części i trzymać ją również w klasie owijania?
Ponowna edycja; zależy to od tego, czy różdżką się jedną "inną" na "produkt", czy pojedynczą "innąElement" z utraconą częścią "produktu". W przypadku tego ostatniego: '[XmlArray]'/'[XmlArrayItem]' - inaczej tak: drugi typ. –