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
proproduct
oder eine einzelneanotherElement
mit Verlust derproduct
Elemente. Für letzteres:[XmlArray]
/[XmlArrayItem]
- ansonsten ja: eine zweite geben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In deinem Beispiel
MyTest
ist nicht der Wurzel; sind Sie versuchen, benennen Sie das array? Ich würde schreiben eine wrapper:Main
,SerializeToXML
undMyWrapper
.