EnvironmentParser.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using fun.IO.Data;
  2. using System.Xml;
  3. using System.Linq;
  4. using Environment = fun.Core.Environment;
  5. namespace fun.IO.Parsers
  6. {
  7. internal sealed class EnvironmentParser : Parser
  8. {
  9. private IEnvironmentDataStore data;
  10. public EnvironmentParser(IEnvironmentDataStore data)
  11. {
  12. this.data = data;
  13. parsers = new Parser[]
  14. {
  15. new EntityParser(data),
  16. new LibaryParser(data)
  17. };
  18. }
  19. public override bool TryParse(XmlNode node)
  20. {
  21. return node.Name == typeof(Environment).Name;
  22. }
  23. public override void Parse(XmlNode node)
  24. {
  25. data.PushEnvironment();
  26. data.AddPushedEnvirionment();
  27. foreach (var _node in node.ChildNodes.OfType<XmlNode>())
  28. foreach (var parser in parsers)
  29. if (parser.TryParse(_node))
  30. parser.Parse(_node);
  31. data.DepushEnvironment();
  32. }
  33. }
  34. }