Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/15/08 14:17:26 (16 years ago)
Author:
gkronber
Message:

bug fixes to make loading of OSGA-TSP work. Some non-working code remains

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/XmlTextReaderBranch/HeuristicLab.Core/PersistenceManager.cs

    r121 r122  
    5151
    5252    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;
    5560    }
    5661
    5762    public static IStorable Restore(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) {
     63      reader = reader.ReadSubtree();
    5864      reader.Read();
    59       return RestoreElement(reader, restoredObjects);
     65      IStorable result = RestoreElement(reader, restoredObjects);
     66      reader.Read();
     67      reader.Close();
     68      return result;
    6069    }
    6170    private static IStorable RestoreElement(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) {
    6271      Guid guid = new Guid(reader["GUID"]);
    63       if(restoredObjects.ContainsKey(guid)) {
    64         reader.ReadEndElement();
     72      if(restoredObjects.ContainsKey(guid)) {       
    6573        return restoredObjects[guid];
    6674      } else {
     
    6977        restoredObjects.Add(guid, instance);
    7078        instance.Populate(reader, restoredObjects);
    71         reader.ReadEndElement();
    7279        return instance;
    7380      }
     
    9097    }
    9198    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);
    95103      reader.MoveToContent(); // read "<?xml version="1.0"?/>
    96104      return PersistenceManager.RestoreElement(reader, new Dictionary<Guid, IStorable>());
Note: See TracChangeset for help on using the changeset viewer.