Вам необходимо создать промежуточный класс:
public class Name
{
[XmlElement(ElementName = "First")]
public string firstName;
[XmlElement(ElementName = "Middle", IsNullable = true)]
public string middleName;
[XmlElement(ElementName = "Last")]
public string lastName;
[XmlElement(ElementName = "Madian", IsNullable = true)]
public string madianName;
}
и затем используйте этот класс внутри Person
:
[XmlRootAttribute("Person", IsNullable= false)]
public class Person
{
public Name Name;
[XmlElement(ElementName = "Gender", DataType = "string")]
public string gender;
...
}