using System.Xml.Serialization;
using System.Collections.Generic;
public static string TestData = @"<Validation>
<Required>false</Required>
<Required>true</Required>
<Message>Missing a Title</Message>
<ViewModel>EnrollViewModel</ViewModel>
<Required>true</Required>
<Message>Title is required when enrolling</Message>
<ViewModel>ContactViewModel</ViewModel>
<Required>true</Required>
<Message>Title is required when enrolling</Message>
<Required>true</Required>
<Message>Missing a Title</Message>
<ViewModel>EnrollViewModel</ViewModel>
<Required>true</Required>
<Message>Title is required when enrolling</Message>
<ViewModel>ContactViewModel</ViewModel>
<Required>true</Required>
<Message>Title is required when enrolling</Message>
<Required>false</Required>
<Message>Missing a Title</Message>
<ViewModel>EnrollViewModel</ViewModel>
<Required>true</Required>
<Message>Title is required when enrolling</Message>
<ViewModel>ContactViewModel</ViewModel>
<Required>true</Required>
<Message>Title is required when enrolling</Message>
<Required>true</Required>
<Message>First name is required</Message>
<ViewModel>EnrollViewModel</ViewModel>
<Required>true</Required>
<Message>First Name is required when enrolling</Message>
<ViewModel>ContactViewModel</ViewModel>
<Required>true</Required>
<Message>First Name is required when enrolling</Message>
<Required>true</Required>
<ViewModel>EnrollViewModel</ViewModel>
<Required>true</Required>
<Message>Last Name is required when enrolling</Message>
<ViewModel>ContactViewModel</ViewModel>
<Required>true</Required>
<Message>Last Name is required when enrolling</Message>
<Required>true</Required>
<Message>Phone number is required</Message>
<ViewModel>EnrollViewModel</ViewModel>
<Required>true</Required>
<Message>Phone number is required when enrolling</Message>
<ViewModel>ContactViewModel</ViewModel>
<Required>true</Required>
<Message>Phone number is required when enrolling</Message>
<Required>false</Required>
<Message>Email is missing</Message>
<ViewModel>EnrollViewModel</ViewModel>
<Required>true</Required>
<Message>Email is required when enrolling</Message>
<ViewModel>ContactViewModel</ViewModel>
<Required>true</Required>
<Message>Email is required</Message>
<ViewModel>ItineraryViewModel</ViewModel>
<Required>true</Required>
<Message>Email is required</Message>
<ViewModel>PassengerDetailsModel</ViewModel>
<Required>true</Required>
<Message>Email is required</Message>
<Required>false</Required>
<Message>Address is missing</Message>
<ViewModel>EnrollViewModel</ViewModel>
<Required>true</Required>
<Message>Address is required when enrolling</Message>
<ViewModel>ContactViewModel</ViewModel>
<Required>false</Required>
<Message>Address is required</Message>
<ViewModel>ItineraryViewModel</ViewModel>
<Required>false</Required>
<Message>Address is required</Message>
<ViewModel>PassengerDetailsModel</ViewModel>
<Required>false</Required>
<Message>Address is required</Message>
<Required>false</Required>
<Message>City is missing</Message>
<Required>false</Required>
<Message>Zip code is missing</Message>
<Required>false</Required>
<Message>Country is missing</Message>
<Required>false</Required>
<IsVisible>true</IsVisible>
<ViewModel>EnrollViewModel</ViewModel>
<Required>false</Required>
<Message>Expiration date is required with passport info</Message>
<ViewModel>ItineraryViewModel</ViewModel>
<Required>false</Required>
<Type>BirthdateADT</Type>
<Required>false</Required>
<Rule>Min:-18,Max:-100</Rule>
<Message>Birthdate is missing</Message>
<Type>BirthdateCHD</Type>
<Required>true</Required>
<Rule>Min:-2,Max:-18</Rule>
<Message>Birthdate is missing</Message>
<Type>BirthdateINF</Type>
<Required>true</Required>
<Rule>Min:0,Max:-2</Rule>
<Message>Birthdate is missing</Message>
<Type>ExpirationDate</Type>
<Required>true</Required>
<IsVisible>true</IsVisible>
<Rule>Min:0,Max:100</Rule>
<Message>Expiration date is missing</Message>
<Type>DocsBirthdateADT</Type>
<Required>true</Required>
<Message>Country is missing</Message>
<ViewModel>EnrollViewModel</ViewModel>
<Required>false</Required>
<ViewModel>CheckInVerificationPageViewModel</ViewModel>
<Required>false</Required>
<Type>DocsBirthdateCHD</Type>
<Required>true</Required>
<ViewModel>CheckInVerificationPageViewModel</ViewModel>
<Required>false</Required>
<Type>DocsBirthdateINF</Type>
<Required>true</Required>
<ViewModel>CheckInVerificationPageViewModel</ViewModel>
<Required>false</Required>
<Required>false</Required>
<Required>false</Required>
public static void Main()
XmlSerializer serializer = new XmlSerializer(typeof(Validation));
using (TextReader reader = new StringReader(Program.TestData))
validation = (Validation)serializer.Deserialize(reader);
foreach (var validationField in validation.ValidationFields)
Console.WriteLine(validationField.Type + "IsRequired");
Console.WriteLine(validationField.Type + "IsVisible");
Console.WriteLine(validationField.Type + "Rule");
Console.WriteLine(validationField.Type + "Message");
foreach(var exceptionViewModel in validationField?.ExceptionViewModels ?? new ExceptionViewModel[0])
Console.WriteLine(validationField.Type + exceptionViewModel.ViewModel + "IsRequired");
Console.WriteLine(validationField.Type + exceptionViewModel.ViewModel + "IsVisible");
Console.WriteLine(validationField.Type + exceptionViewModel.ViewModel + "Rule");
Console.WriteLine(validationField.Type + exceptionViewModel.ViewModel + "Message");
[XmlElement("ValidationField")]
public ValidationField[] ValidationFields { get; set; }
public class ValidationField
public string Type { get; set; }
public string Required { get; set; }
public string Visible { get; set; }
public string Rule { get; set; }
public string Message { get; set; }
[XmlElement("ExceptionViewModel")]
public ExceptionViewModel[] ExceptionViewModels { get; set; }
public class ExceptionViewModel
[XmlElement("ViewModel")]
public string ViewModel { get; set; }
public string Required { get; set; }
public string Visible { get; set; }
public string Rule { get; set; }
public string Message { get; set; }