static object Parse(XmlNode node)
{
switch (node.Name) {
case "dict":
return ParseDictionary (node);
case "array":
return ParseArray (node);
case "string":
return node.InnerText;
case "integer":
// int result;
return (int)(Convert.ToDouble (node.InnerText, System.Globalization.NumberFormatInfo.InvariantInfo));
case "real":
return (float)(Convert.ToDouble (node.InnerText, System.Globalization.NumberFormatInfo.InvariantInfo));
case "false":
return false;
case "true":
return true;
case "null":
return null;
case "date":
if(node.InnerText == "1-01-01T00:00:00Z")
return XmlConvert.ToDateTime ("0001-01-01T00:00:00Z", XmlDateTimeSerializationMode.Utc);
else
return XmlConvert.ToDateTime (node.InnerText, XmlDateTimeSerializationMode.Utc);
case "data":
return Convert.FromBase64String (node.InnerText);
}
throw new ApplicationException(String.Format("Plist Node `{0}' is not supported", node.Name));
}
#endregion