Free cookie consent management tool by TermsFeed Policy Generator

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

created a branch that uses XmlTextWriter instead of XMLDocument to save documents. Investigating ticket #103.

Location:
branches/XmlTextWriterBranch
Files:
1 edited
1 copied

Legend:

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

    r40 r119  
    2828namespace HeuristicLab.Core {
    2929  public static class PersistenceManager {
    30     public static XmlDocument CreateXmlDocument() {
    31       XmlDocument document = new XmlDocument();
    32       document.AppendChild(document.CreateXmlDeclaration("1.0", null, null));
    33       return document;
     30    //public static XmlDocument CreateXmlDocument() {
     31    //  XmlDocument document = new XmlDocument();
     32    //  document.AppendChild(document.CreateXmlDeclaration("1.0", null, null));
     33    //  return document;
     34    //}
     35    public static void Persist(IStorable instance, XmlWriter writer, IDictionary<Guid, IStorable> persistedObjects) {
     36      Persist(instance.GetType().Name, instance, writer, persistedObjects);
    3437    }
    35     public static XmlNode Persist(IStorable instance, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
    36       return Persist(instance.GetType().Name, instance, document, persistedObjects);
    37     }
    38     public static XmlNode Persist(string name, IStorable instance, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
     38    public static void Persist(string name, IStorable instance, XmlWriter writer, IDictionary<Guid, IStorable> persistedObjects) {
    3939      if (persistedObjects.ContainsKey(instance.Guid)) {
    40         XmlNode node = document.CreateNode(XmlNodeType.Element, name, null);
    41         XmlAttribute guidAttribute = document.CreateAttribute("GUID");
    42         guidAttribute.Value = instance.Guid.ToString();
    43         node.Attributes.Append(guidAttribute);
    44         return node;
     40        writer.WriteStartElement(name, null);
     41        writer.WriteAttributeString("GUID", instance.Guid.ToString());
     42        writer.WriteEndElement();
     43
     44        //XmlNode node = document.CreateNode(XmlNodeType.Element, name, null);
     45        //XmlAttribute guidAttribute = document.CreateAttribute("GUID");
     46        //guidAttribute.Value = instance.Guid.ToString();
     47        //node.Attributes.Append(guidAttribute);
     48        //return node;
    4549      } else {
    4650        persistedObjects.Add(instance.Guid, instance);
    47         XmlNode node = instance.GetXmlNode(name, document, persistedObjects);
    48         return node;
     51        writer.WriteStartElement(name);
     52        instance.Persist(name, writer, persistedObjects);
     53        writer.WriteEndElement();
     54        //XmlNode node = instance.GetXmlNode(name, document, persistedObjects);
     55        //return node;
    4956      }
    5057    }
     58
    5159    public static IStorable Restore(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
    5260      Guid guid = new Guid(node.Attributes["GUID"].Value);
     
    6775    }
    6876    public static void Save(IStorable instance, Stream stream) {
    69       XmlDocument document = PersistenceManager.CreateXmlDocument();
    70       document.AppendChild(Persist(instance, document, new Dictionary<Guid, IStorable>()));
    71       document.Save(stream);
     77      XmlTextWriter writer = new XmlTextWriter(stream, null);
     78      writer.Formatting = Formatting.Indented;
     79      writer.WriteProcessingInstruction("xml", "version=\"1.0\"");
     80      Persist(instance, writer, new Dictionary<Guid, IStorable>());     
     81      writer.Flush();
     82      writer.Close();
    7283    }
    7384    public static IStorable Load(string filename) {
Note: See TracChangeset for help on using the changeset viewer.