XmlSerializer を使用して逆シリアル化できます。
// Remove numbers from userObject tags
var xmlStringReplaced = Regex.Replace(xmlString, "<(/?)userObject[0-9]+>", "<$1userObject>");
// XmlDeserialize the new XML string to a Response object
var stringReader = new StringReader(xmlStringReplaced);
var xmlSerialize = new XmlSerializer(typeof(Response), new XmlRootAttribute("response"));
var response = (Response)xmlSerialize.Deserialize(stringReader);
そして、逆シリアル化する型:
public class Response
{
[XmlIgnore]
public DateTime Date { get; set; }
[XmlElement("date")]
public String DateXmlTemp
{
get { return Date.ToString("yyyy-MM-dd HH:mm:ss"); }
set { Date = DateTime.Parse(value); }
}
[XmlArray("users")]
[XmlArrayItem("userObject")]
public List<UserObject> Users { get; set; }
}
public class UserObject
{
[XmlElement("name")]
public String Name { get; set; }
[XmlElement("surname")]
public String Surname { get; set; }
}
userObject タグで数値を使用する場合は、代わりに Regex.Replace を変更してタグの属性として追加し、XmlAttribute("id") 属性を使用して UserObject クラスにプロパティを追加します。