PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/FreeMind/Converter.cs

https://github.com/Fitzse/FreeMindConverter
C# | 60 lines | 57 code | 3 blank | 0 comment | 8 complexity | 4f512e21355acd532f5dae19d1c23504 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Xml.Linq;
  6. using FreeMind.Models;
  7. namespace FreeMind
  8. {
  9. public class Converter
  10. {
  11. public static IEnumerable<Actor> GetActorsFromFile(String filePath)
  12. {
  13. using (var mapFile = File.OpenRead(filePath))
  14. {
  15. var xDoc = XDocument.Load(mapFile);
  16. var root = xDoc.Root;
  17. if (root != null )
  18. {
  19. var actorElement = root.Element("node");
  20. if(actorElement != null)
  21. {
  22. return actorElement.Elements("node").Select(CreateActor);
  23. }
  24. }
  25. }
  26. return Enumerable.Empty<Actor>();
  27. }
  28. private static Story CreateStory(XElement element)
  29. {
  30. var text = "";
  31. var textAttribute = element.Attribute("TEXT");
  32. if(textAttribute != null)
  33. {
  34. text = textAttribute.Value;
  35. }
  36. var story = new Story(text)
  37. {
  38. Children = element.Elements("node").Select(CreateStory)
  39. };
  40. return story;
  41. }
  42. private static Actor CreateActor(XElement element)
  43. {
  44. var name = "";
  45. var nameAttribute = element.Attribute("TEXT");
  46. if(nameAttribute != null)
  47. {
  48. name = nameAttribute.Value;
  49. }
  50. var actor = new Actor(name)
  51. {
  52. Stories = element.Elements("node").Select(CreateStory)
  53. };
  54. return actor;
  55. }
  56. }
  57. }