I have referenced this question: Using XmlSerializer with an array in the root element
<?xml version="1.0" encoding="utf-8"?>
<Subscribers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SubscriberList>
<Subscriber>
<Email>test@somewhere.com</Email>
<SubscriptionList>
<Subscription>
<Source>TFSBuildServiceHost.2013</Source>
</Subscription>
<Subscription>
<TextContains>
<string>ABC</string>
<string>DEF</string>
<string>XYZ</string>
</TextContains>
</Subscription>
</SubscriptionList>
</Subscriber>
</SubscriberList>
</Subscribers>
This is what I want my XML to look like. How can I change the code below to build it in this fashion.
<Subscription>
<TextContains>ABC</TextContains>
<TextContains>DEF</TextContains>
<TextContains>XYZ</TextContains>
</Subscription>
This is my class definition to serialize:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace EventLog_Reporter
{
public class Subscription
{
public string Source;
public List<string> TextContains;
public List<string> UCTextContains;
public List<string> TextExcludes;
public List<string> UCTextExcludes;
}
public class Subscriber
{
public string Group;
public string Email;
public List<Subscription> SubscriptionList;
}
public class Subscribers
{
public List<Subscriber> SubscriberList;
}
}
This is my code to write out the serialized object to an XML file:
public static void testSerialization()
{
Subscribers subscribers = new Subscribers();
Subscription subscription1 = new Subscription();
Subscription subscription2 = new Subscription();
Subscriber subscriber1 = new Subscriber();
subscription2.TextContains = new List<string>();
subscription2.TextContains.Add("ABC");
subscription2.TextContains.Add("DEF");
subscription2.TextContains.Add("XYZ");
subscription1.Source = "TFSBuildServiceHost.2013";
subscriber1.Email = "test@somewhere.com";
subscriber1.SubscriptionList = new List<Subscription>();
subscriber1.SubscriptionList.Add(subscription1);
subscriber1.SubscriptionList.Add(subscription2);
subscribers.SubscriberList = new List<Subscriber>();
subscribers.SubscriberList.Add(subscriber1);
string strOutFilenameXMLSerializer = "xmlSerializerObjectTest1.xml";
StreamWriter sw = new StreamWriter(strOutFilenameXMLSerializer);
XmlSerializer xmlSerializer = new XmlSerializer(subscribers.GetType());
xmlSerializer.Serialize(sw, subscribers);
sw.Close();
}
Thanks.