- Timestamp:
- 04/15/08 14:17:26 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/XmlTextReaderBranch/HeuristicLab.Core/PersistenceManager.cs
r121 r122 51 51 52 52 public static IStorable Restore(XmlReader reader, string elementName, IDictionary<Guid, IStorable> restoredObjects) { 53 reader.ReadToDescendant(elementName); 54 return RestoreElement(reader, restoredObjects); 53 reader = reader.ReadSubtree(); 54 reader.Read(); 55 if(reader.Name != elementName) throw new XmlException("Expected: \"" + elementName + "\" found: \"" + reader.Name+"\""); 56 IStorable result = RestoreElement(reader, restoredObjects); 57 reader.Read(); 58 reader.Close(); 59 return result; 55 60 } 56 61 57 62 public static IStorable Restore(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 63 reader = reader.ReadSubtree(); 58 64 reader.Read(); 59 return RestoreElement(reader, restoredObjects); 65 IStorable result = RestoreElement(reader, restoredObjects); 66 reader.Read(); 67 reader.Close(); 68 return result; 60 69 } 61 70 private static IStorable RestoreElement(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 62 71 Guid guid = new Guid(reader["GUID"]); 63 if(restoredObjects.ContainsKey(guid)) { 64 reader.ReadEndElement(); 72 if(restoredObjects.ContainsKey(guid)) { 65 73 return restoredObjects[guid]; 66 74 } else { … … 69 77 restoredObjects.Add(guid, instance); 70 78 instance.Populate(reader, restoredObjects); 71 reader.ReadEndElement();72 79 return instance; 73 80 } … … 90 97 } 91 98 public static IStorable Load(Stream stream) { 92 XmlDocument doc = new XmlDocument(); 93 XmlTextReader reader = new XmlTextReader(stream); 94 reader.WhitespaceHandling = WhitespaceHandling.None; 99 XmlReaderSettings settings = new XmlReaderSettings(); 100 settings.IgnoreComments = true; 101 settings.IgnoreWhitespace = true; 102 XmlReader reader = XmlReader.Create(stream, settings); 95 103 reader.MoveToContent(); // read "<?xml version="1.0"?/> 96 104 return PersistenceManager.RestoreElement(reader, new Dictionary<Guid, IStorable>());
Note: See TracChangeset
for help on using the changeset viewer.