/// <summary>
        /// Imports the xml data specified.
        /// </summary>
        /// <param name="xmlData">The xml data to process</param>
        /// <param name="dataToPopulate">The data to add to, if previous files have been imported.</param>
        public void Import(byte[] xmlData, ref BeerXmlData dataToPopulate)
        {
            XmlDocument document = new XmlDocument();
              try
              {
            using (MemoryStream stream = new MemoryStream(xmlData))
              document.Load(stream);
              }
              catch (Exception e)
              {
            throw new InvalidDataException("Data provided is not valid XML", e);
              }

              Import(document, ref dataToPopulate);
        }
 /// <summary>
 /// Imports the file specified and processes the data.
 /// </summary>
 /// <param name="fileName">The file to import.</param>
 /// <param name="dataToPopulate">The data to add to, if previous files have been imported.</param>
 public void ImportFile(string fileName, ref BeerXmlData dataToPopulate)
 {
     Import(File.ReadAllText(fileName), ref dataToPopulate);
 }
 /// <summary>
 /// Imports the data from the xmlDocument
 /// </summary>
 /// <param name="document">The data to import</param>
 /// <param name="dataToPopulate">The data to add to, if previous files have been imported.</param>
 public void Import(XmlDocument document, ref BeerXmlData dataToPopulate)
 {
     ProcessXmlDocument(document, ref dataToPopulate);
 }
 /// <summary>
 /// Imports the xml data specified.
 /// </summary>
 /// <param name="xmlData">The xml data to process</param>
 /// <param name="dataToPopulate">The data to add to, if previous files have been imported.</param>
 public void Import(string xmlData, ref BeerXmlData dataToPopulate)
 {
     XmlDocument document = new XmlDocument();
       document.LoadXml(xmlData);
       Import(document, ref dataToPopulate);
 }
        private BeerXmlData ProcessXmlDocument(XmlDocument document, ref BeerXmlData dataToPopulate)
        {
            if (dataToPopulate == null)
            throw new ArgumentNullException("dataToPopulate");

              BeerXmlVersion version = FindBeerXmlVersion(document);
              if (version == BeerXmlVersion.Unknown)
            throw new InvalidDataException("The XML provided does not match any known BeerXML Version.");

              switch (version)
              {
            case BeerXmlVersion.Version_1_0:
              XmlParser_1_0.Instance.ProcessXmlDocument(document, dataToPopulate);
              break;
            default:
              throw new InvalidOperationException(String.Format("Unknown BeerXmlVersion of '{0}' encountered.", version));
              }

              return dataToPopulate;
        }