>>public static void PopulateFromSQML(this Dictionary<String, String> tDictionary, String tcSQML) >> { >> Regex regexXml = new Regex(@"\<(?'field'[^/].*?)\>(?'data'.*?)\</\k'field'\>"); >> >> MatchCollection matches = regexXml.Matches(tcSQML); >> foreach (Match m in matches) >> { >> try >> { >> if (!tDictionary.ContainsKey(m.Groups["field"].ToString())) >> tDictionary.Add(m.Groups["field"].ToString(), m.Groups["data"].ToString()); >> } >> catch (Exception) >> { >> // Don't care >> } >> } >> }>>
> public static void PopulateFromSQML(this Dictionary<String, String> tDictionary, String tcSQML) > { > tDictionary.Clear(); > > string pattern = @"<(?<field>[^/>]+)>(?<data>.*)</\k<field>>"; > > MatchCollection matches = Regex.Matches(tcSQML, pattern, RegexOptions.Singleline); > foreach (Match m in matches) > { > //Console.WriteLine("Key: {0}\nValue: {1}\n", m.Groups["field"], m.Groups["data"]); > > if (!tDictionary.ContainsKey(m.Groups["field"].ToString())) > tDictionary.Add(m.Groups["field"].ToString(), m.Groups["data"].ToString()); > } > > } > >Do you know how can I print that dictionary?
String s = @"<func>getqtyremaining</func><tcoperator>ADMIN</tcoperator><tcreturntype>XML</tcreturntype> <tcsalespoint>TICKET004001</tcsalespoint><ttdatetime>03/11/2013 01:19 PM</ttdatetime> <TCDCILIST><DCI>ACTIVITIESSKYDIVING 1000 </DCI><DCI>ACTIVITIESSKYDIVING 1030 </DCI> <DCI>ACTIVITIESSKYDIVING 1100 </DCI><DCI>ACTIVITIESSKYDIVING 1130 </DCI><DCI>ACTIVITIESSKYDIVING 1200 </DCI> <DCI>ACTIVITIESSKYDIVING 1230 </DCI><DCI>ACTIVITIESSKYDIVING 1300 </DCI><DCI>ACTIVITIESSKYDIVING 1330 </DCI> <DCI>ACTIVITIESSKYDIVING 1400 </DCI><DCI>ACTIVITIESSKYDIVING 1430 </DCI></TCDCILIST>"; Dictionary<String, String> parameters = new Dictionary<String, String>(StringComparer.OrdinalIgnoreCase); parameters.PopulateFromSQML(s); foreach (KeyValuePair<string, string> val in parameters) { Console.WriteLine(val.Key, val.Value); } Console.ReadKey();I am not sure how to write this foreach.