Ja, unter Verwendung von t Er XmlSerializer
wird es eine List<T>
serialisieren, solange T
(oder in Ihrem Fall Tag
) serialisierbar ist.
Move move = new Move { MoveName = "MyName" };
move.oTags.Add(new Tag { TagName = "Value1" });
move.oTags.Add(new Tag { TagName = "Value2" });
move.oTags.Add(new Tag { TagName = "Value3" });
StringBuilder output = new StringBuilder();
var writer = new StringWriter(output);
XmlSerializer serializer = new XmlSerializer(typeof(Move));
serializer.Serialize(writer, move);
Console.WriteLine(output.ToString());
Dies gibt Ihre aktuelle Klassenstruktur verwenden wie:
<?xml version="1.0" encoding="utf-16"?>
<Move xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<oTags>
<Tag>
<TagName>Value1</TagName>
</Tag>
<Tag>
<TagName>Value2</TagName>
</Tag>
<Tag>
<TagName>Value3</TagName>
</Tag>
</oTags>
<MoveName>MyName</MoveName>
</Move>
Ich werde sehen, ob ich einen Weg finden kann Ihr aktuelles XML-Schema passen, aber man kann sehen, wie XmlAttributes anzuwenden und Spiel selbst damit herum.
EDIT:
Wenn Sie Ihre Klassendeklaration ändern Sie das folgende XmlAttributes zu verwenden, erhalten Sie das genaue XML-Schema wie in Ihrem Beispiel erreichen:
public class Move
{
[XmlElement(Order = 1)]
public string MoveName {get; set;}
[XmlElement(Order = 2, ElementName = "Tags")]
public List<Tag> oTags = new List<Tag>();
}
public class Tag
{
[XmlText]
public string TagName {get; set;}
}
Welche wenn serialisierte produzieren:
<?xml version="1.0" encoding="utf-16"?>
<Move xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MoveName>MyName</MoveName>
<Tags>Value1</Tags>
<Tags>Value2</Tags>
<Tags>Value3</Tags>
</Move>
Unabhängig von den aktuellen Antworten werden _how_ Sie es Serialisierung? Wenn Sie zum Beispiel den 'XmlSerializer' verwenden, wird es funktionieren. (Sie müssen möglicherweise einige spezielle Attribute oder Kreativität verwenden, um die gewünschte XML-Schema-Ausgabe zu erhalten) –
Ich verwende XmlSerializer –
Wie möchten Sie das Schema? Es scheint ein wenig mehrdeutig, wie Sie mit vielen Tags umgehen. Sollte es sein ' Name Value1 Value2 ... WertN '? Sind Sie auch flexibel beim Ändern Ihrer "Move" - und "Tag" -Klassen? –