/// <summary>
        /// Parse the local prev config metadata and create a list of ServerParam objects.
        /// </summary>
        private void MetaXmlFile_PrevConfig_PostParse(object sender, PostParseEventArgs e)
        {
            /* <config>
             *   <r id="arena.campaign_id" val="45" desc="Current Campaign Number" />
             *   ...
             * </config>
             */


            // initialise game object collections

            this.prevServerParams = new Dictionary <string, ServerParam>();


            // loop over xml data

            Exception firstException = null;

            for (int i = 0; i < e.Data.Count; i++)
            {
                e.Data.Offset = i;

                try
                {
                    // parse and validate attribute values

                    string key   = e.Data.GetValue <string>("id");
                    string value = e.Data.GetValue <string>("val");
                    string desc  = e.Data.GetValue <string>("desc", key);


                    // create game objects

                    this.prevServerParams.Add(key, new ServerParam(key, value, desc));
                }
                catch (Exception ex)
                {
                    if (firstException == null)
                    {
                        firstException = ex;
                    }
                }
            } // for e.Data


            // if any errors, throw first

            if (firstException != null)
            {
                throw firstException;
            }
        }
 private void OnExitCollationGroup(object sender, PostParseEventArgs args)
 {
     inCollationGroup = false;
 }
 /// <summary>
 /// handle the postparse event
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 public virtual void PostParse(object sender, PostParseEventArgs args)
 {
     UnIndent();
     Output.WriteLine("{0}{1}{2}: {3}", Tab, MatchChar(args.Match), args.Parser.ID, ScannerValue(args.Scanner));
 }