- Timestamp:
- 04/14/08 17:49:47 (16 years ago)
- Location:
- branches/XmlTextWriterBranch
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/XmlTextWriterBranch/HeuristicLab.Core/PersistenceManager.cs
r40 r119 28 28 namespace HeuristicLab.Core { 29 29 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); 34 37 } 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) { 39 39 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; 45 49 } else { 46 50 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; 49 56 } 50 57 } 58 51 59 public static IStorable Restore(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) { 52 60 Guid guid = new Guid(node.Attributes["GUID"].Value); … … 67 75 } 68 76 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(); 72 83 } 73 84 public static IStorable Load(string filename) {
Note: See TracChangeset
for help on using the changeset viewer.