using System.Collections.Generic;
using System.Xml.Serialization;
public static void Main()
string input = @"<?xml version=""1.0"" encoding=""utf-16""?>
<FieldDefinition id=""1001"" name=""Request ID"" alias=""Q_ID"" />
<FieldDefinition id=""1002"" name=""User"" alias=""Target"" />
<FieldDefinition id=""1003"" name=""Which item(s) is the access requested for?"" alias=""Which_items_is_requested"" />
<FieldDefinition id=""1004"" name=""Select specific(s) for item1"" alias=""item1"" />
<FieldDefinition id=""1005"" name=""Select specific(s) for item2"" alias=""item2"" />
<FieldDefinition id=""1006"" name=""Select specific(s) for item3"" alias=""item3"" />
<FieldDefinition id=""101"" name=""First Name"" alias=""First_Name"" />
<FieldDefinition id=""102"" name=""Last Name"" alias=""Last_Name"" />
<FieldDefinition id=""100"" name=""Email"" alias=""Email"" />
<LevelCount id=""989"" count=""2"" />
<LevelCount id=""85"" count=""2"" />
<Record contentId=""1092725"" levelId=""989"" moduleId=""564"">
<Record contentId=""736205"" levelId=""85"" moduleId=""84"">
<Field id=""100"" type=""1"">john.smith@abc.com</Field>
<Field id=""101"" type=""1"">John</Field>
<Field id=""102"" type=""1"">Smith</Field>
<Field id=""1003"" type=""4"">
<ListValue id=""11"" displayName=""Issues Management"">item1</ListValue>
<ListValue id=""13"" displayName=""Master Control Procedures"">item3</ListValue>
<Field id=""1001"" type=""6"">123123</Field>
<Field id=""1002"" type=""9"">
<Reference id=""736205"">John Smith</Reference>
<Field id=""1005"" type=""9"">
<Reference id=""3"">item11</Reference>
<Reference id=""3"">item12</Reference>
<Field id=""1006"" type=""9"" />
<Field id=""1004"" type=""9"">
<Reference id=""7"">item31</Reference>
<Reference id=""8"">item32</Reference>
<Record contentId=""1092759"" levelId=""989"" moduleId=""564"">
<Record contentId=""775678"" levelId=""85"" moduleId=""84"">
<Field id=""100"" type=""1"">Peter.Smith@abc.com</Field>
<Field id=""101"" type=""1"">Peter</Field>
<Field id=""102"" type=""1"">Smith</Field>
<Field id=""1003"" type=""4"">
<ListValue id=""11"" displayName=""Issues Management"">item1</ListValue>
<ListValue id=""12"" displayName=""Master Control Procedures"">item2</ListValue>
<ListValue id=""13"" displayName=""Control Procedure"">item3</ListValue>
<Field id=""1001"" type=""6"">123124</Field>
<Field id=""1002"" type=""9"">
<Reference id=""775678"">Peter Smith</Reference>
<Field id=""1005"" type=""9"">
<Reference id=""3"">item11</Reference>
<Reference id=""4"">item12</Reference>
<Field id=""1006"" type=""9"">
<Reference id=""5"">item21</Reference>
<Reference id=""6"">item22</Reference>
<Field id=""1004"" type=""9"">
<Reference id=""7"">item31</Reference>
<Reference id=""8"">item32</Reference>
using var reader = new StringReader(input);
var records = (Records)new XmlSerializer(typeof(Records)).Deserialize(reader);
records.Items[0].ChildRecord.Dump();
public List<Record> Items { get; } = new();
[XmlAttribute("contentId")]
public int ContentId { get; set; }
public Record ChildRecord { get; set; }
public List<Field> Fields { get; } = new();
public int Id { get; set; }
[XmlElement("Reference")]
public List<Reference> References { get; } = new();
public List<ListValue> ListValues { get; } = new();
public string Content { get; set; }
public int Id { get; set; }
public int Id { get; set; }
public string Content { get; set; }