private static object parse(XmlNode node) { string name = node.Name; if (name == "dict") { return(Plist.parseDictionary(node)); } if (name == "array") { return(Plist.parseArray(node)); } if (name == "string") { return(node.InnerText); } if (name == "integer") { return(Convert.ToInt32(node.InnerText, NumberFormatInfo.InvariantInfo)); } if (name == "real") { return(Convert.ToDouble(node.InnerText, NumberFormatInfo.InvariantInfo)); } if (name == "false") { return(false); } if (name == "true") { return(true); } if (name == "null") { return(null); } if (name == "date") { return(XmlConvert.ToDateTime(node.InnerText, XmlDateTimeSerializationMode.Utc)); } if (name != "data") { throw new ApplicationException(string.Format("Plist Node `{0}' is not supported", node.Name)); } return(Convert.FromBase64String(node.InnerText)); }