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 (_contentFile != null && _contentFile.Exists) { if (!this._isLoaded && base.IsEmpty && (_relatedTopics == null || _relatedTopics.Count == 0)) { return; } // If loaded but not modified, there is no need to save it... if (this.IsLoaded && !this.Modified) { 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(_contentFile, 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; this.Modified = false; } finally { if (writer != null) { writer.Close(); writer = null; } } }
public void Load(BuildPathResolver resolver) { BuildExceptions.NotNull(resolver, "resolver"); if (_isLoaded) { return; } if (String.IsNullOrEmpty(_contentFile) || File.Exists(_contentFile) == false) { return; } if (_contentDir == null) { _contentDir = new BuildDirectoryPath( Path.GetDirectoryName(_contentFile)); } XmlReader reader = null; try { XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; settings.IgnoreWhitespace = true; settings.IgnoreProcessingInstructions = true; reader = XmlReader.Create(_contentFile, settings); reader.MoveToContent(); string resolverId = BuildPathResolver.Push(resolver); { this.ReadXml(reader); BuildPathResolver.Pop(resolverId); } _isLoaded = true; this.Modified = false; } finally { if (reader != null) { reader.Close(); reader = null; } } }
public void Load(BuildPathResolver resolver) { BuildExceptions.NotNull(resolver, "resolver"); if (_isLoaded) { return; } if (String.IsNullOrEmpty(_contentFile) || File.Exists(_contentFile) == false) { return; } if (_contentDir == null) { _contentDir = new BuildDirectoryPath( Path.GetDirectoryName(_contentFile)); } _hasFilter = false; if (_listFilters != null && _listFilters.Count != 0) { int itemCount = _listFilters.Count; for (int i = 0; i < itemCount; i++) { ConceptualFilter filter = _listFilters[i]; if (filter != null && filter.IsValid && filter.Enabled) { _hasFilter = true; break; } } } XmlReader reader = null; try { XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; settings.IgnoreWhitespace = true; settings.IgnoreProcessingInstructions = true; reader = XmlReader.Create(_contentFile, settings); reader.MoveToContent(); string resolverId = BuildPathResolver.Push(resolver); { this.ReadXml(reader); BuildPathResolver.Pop(resolverId); } if (String.IsNullOrEmpty(_defaultTopic)) { // If not set, use the first topic... if (this.Count != 0) { _defaultTopic = this[0].TopicId; } } _isLoaded = true; this.Modified = false; } finally { if (reader != null) { reader.Close(); reader = null; } } }