public static void parseXmlFile( string filename, XML_SaxParserComponent mainComponent )
    {
      XML_SaxParserDelegator delegator = new XML_SaxParserDelegator(mainComponent);

      XmlTextReader reader = new XmlTextReader(filename);
      while (reader.Read())
      {
        switch (reader.NodeType)
        {
          case XmlNodeType.Element: // The node is an element.

           List<XML_Attribute> attributes = new List<XML_Attribute>();

           if (reader.HasAttributes)
           {
             for (int i = 0; i < reader.AttributeCount; i++)
             {
               reader.MoveToAttribute(i);

               XML_Attribute attribute = new XML_Attribute();
               attribute._name = reader.Name;
               attribute._value = reader.Value;

               attributes.Add(attribute);
             }
             reader.MoveToElement(); //Moves the reader back to the element node.
           }

           if (reader.IsEmptyElement)
            {
              delegator.startElement( reader.Name, attributes );
              delegator.endElement( reader.Name );
            }
            else
            {
              delegator.startElement( reader.Name, attributes );
            }

            break;
          case XmlNodeType.Text: //Display the text in each element.
            //Debug.LogWarning(reader.Value);
            break;
          case XmlNodeType.EndElement: //Display the end of the element.

            delegator.endElement( reader.Name );
            break;
        }
      }
    }
 public XML_SaxParserDelegator(XML_SaxParserComponent component)
 {
   _components = new List<XML_SaxParserComponent>();
   _components.Add(component);
 }