public void Save(BuildPathResolver resolver) { BuildExceptions.NotNull(resolver, "resolver"); // If this is not yet located, and the contents is empty, we // will simply not continue from here... if (_documentFile != null && _documentFile.Exists) { if (!this._isLoaded && this.IsEmpty) { return; } } XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = new string(' ', 4); settings.Encoding = Encoding.UTF8; settings.OmitXmlDeclaration = false; XmlWriter writer = null; try { writer = XmlWriter.Create(_documentFile, settings); string resolverId = BuildPathResolver.Push(resolver); { writer.WriteStartDocument(); this.WriteXml(writer); writer.WriteEndDocument(); BuildPathResolver.Pop(resolverId); } // The file content is now same as the memory, so it can be // considered loaded... _isLoaded = true; } finally { if (writer != null) { writer.Close(); writer = null; } } }
public void Load(BuildPathResolver resolver) { BuildExceptions.NotNull(resolver, "resolver"); if (_isLoaded) { return; } if (String.IsNullOrEmpty(_documentFile) || File.Exists(_documentFile) == false) { return; } XmlReader reader = null; try { XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; settings.IgnoreWhitespace = true; settings.IgnoreProcessingInstructions = true; reader = XmlReader.Create(_documentFile, settings); reader.MoveToContent(); string resolverId = BuildPathResolver.Push(resolver); { this.ReadXml(reader); BuildPathResolver.Pop(resolverId); } _isLoaded = true; } finally { if (reader != null) { reader.Close(); reader = null; } } }