- Timestamp:
- 04/15/08 16:41:18 (16 years ago)
- Location:
- branches/XmlReaderWriterBranch
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/XmlReaderWriterBranch/HeuristicLab.Core/PersistenceManager.cs
r119 r125 57 57 } 58 58 59 public static IStorable Restore(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) { 60 Guid guid = new Guid(node.Attributes["GUID"].Value); 61 if (restoredObjects.ContainsKey(guid)) { 59 public static IStorable Restore(XmlReader reader, string elementName, IDictionary<Guid, IStorable> restoredObjects) { 60 reader = reader.ReadSubtree(); 61 reader.Read(); 62 if(reader.Name != elementName) throw new XmlException("Expected: \"" + elementName + "\" found: \"" + reader.Name+"\""); 63 IStorable result = RestoreElement(reader, restoredObjects); 64 reader.Read(); 65 reader.Close(); 66 return result; 67 } 68 69 public static IStorable Restore(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 70 reader = reader.ReadSubtree(); 71 reader.Read(); 72 IStorable result = RestoreElement(reader, restoredObjects); 73 reader.Read(); 74 reader.Close(); 75 return result; 76 } 77 private static IStorable RestoreElement(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 78 Guid guid = new Guid(reader["GUID"]); 79 if(restoredObjects.ContainsKey(guid)) { 62 80 return restoredObjects[guid]; 63 81 } else { 64 Type type = Type.GetType( node.Attributes["Type"].Value, true);82 Type type = Type.GetType(reader["Type"], true); 65 83 IStorable instance = (IStorable)Activator.CreateInstance(type); 66 84 restoredObjects.Add(guid, instance); 67 instance.Populate( node, restoredObjects);85 instance.Populate(reader, restoredObjects); 68 86 return instance; 69 87 } … … 89 107 } 90 108 public static IStorable Load(Stream stream) { 91 XmlDocument doc = new XmlDocument(); 92 doc.Load(stream); 93 return PersistenceManager.Restore(doc.ChildNodes[1], new Dictionary<Guid, IStorable>()); 109 XmlReaderSettings settings = new XmlReaderSettings(); 110 settings.IgnoreComments = true; 111 settings.IgnoreWhitespace = true; 112 XmlReader reader = XmlReader.Create(stream, settings); 113 reader.MoveToContent(); // read "<?xml version="1.0"?/> 114 return PersistenceManager.RestoreElement(reader, new Dictionary<Guid, IStorable>()); 94 115 } 95 116
Note: See TracChangeset
for help on using the changeset viewer.