Mega Code Archive

 
Categories / C# / Collections Data Structure
 

Name Value Pair List

// HtmlAgilityPack V1.0 - Simon Mourier <simon underscore mourier at hotmail dot com> using System; using System.Collections; namespace HtmlAgilityPack {     internal class NameValuePair     {         internal readonly string Name;         internal string Value;         internal NameValuePair()         {         }         internal NameValuePair(string name)             :             this()         {             Name = name;         }         internal NameValuePair(string name, string value)             :             this(name)         {             Value = value;         }     }   internal class NameValuePairList   {     internal readonly string Text;     private ArrayList _allPairs;     private Hashtable _pairsWithName;     internal NameValuePairList():       this(null)     {     }     internal NameValuePairList(string text)     {       Text = text;       _allPairs = new ArrayList();       _pairsWithName = new Hashtable();       Parse(text);     }     internal string GetNameValuePairValue(string name)     {       if (name==null)         throw new ArgumentNullException();       ArrayList al = GetNameValuePairs(name);       if (al==null)         return null;       // return first item       NameValuePair nvp = al[0] as NameValuePair;       return nvp.Value;     }     internal ArrayList GetNameValuePairs(string name)     {       if (name==null)         return _allPairs;       return _pairsWithName[name] as ArrayList;     }     private void Parse(string text)     {       _allPairs.Clear();       _pairsWithName.Clear();       if (text==null)         return;       string[] p = text.Split(';');       if (p==null)         return;       foreach(string pv in p)       {         if (pv.Length==0)           continue;         string[] onep = pv.Split(new char[]{'='}, 2);         if (onep==null)           continue;         NameValuePair nvp = new NameValuePair(onep[0].Trim().ToLower());         if (onep.Length<2)           nvp.Value = "";         else           nvp.Value = onep[1];         _allPairs.Add(nvp);         // index by name         ArrayList al = _pairsWithName[nvp.Name] as ArrayList;         if (al==null)         {           al = new ArrayList();           _pairsWithName[nvp.Name] = al;         }         al.Add(nvp);       }     }     internal static string GetNameValuePairsValue(string text, string name)     {       NameValuePairList l = new NameValuePairList(text);       return l.GetNameValuePairValue(name);     }   } }