private BaseEntityParser GetParser(string nodeName) { BaseEntityParser parser = _parsers[nodeName]; if (parser == null) { throw new Exception($"Invalid node name {nodeName}"); } return(_parsers[nodeName]); }
public IEnumerable <BaseEntity> ReadCatalog() { using (XmlReader xmlReader = XmlReader.Create("Catalog.xml", new XmlReaderSettings { IgnoreWhitespace = true, IgnoreComments = true })) { xmlReader.ReadToFollowing(_catalogName); xmlReader.ReadStartElement(); do { while (xmlReader.NodeType == XmlNodeType.Element) { var node = XNode.ReadFrom(xmlReader) as XElement; BaseEntityParser parser = GetParser(node.Name.LocalName); yield return(parser.Parse(node)); } } while (xmlReader.Read()); } }