protected override void OnReadContentXml(XmlReader reader) { if (String.Equals(reader.Name, "content", StringComparison.OrdinalIgnoreCase) && String.Equals( reader.GetAttribute("type"), "Reference", StringComparison.OrdinalIgnoreCase)) { if (_topicContent == null) { _topicContent = new ReferenceContent(); } if (reader.IsEmptyElement) { string sourceFile = reader.GetAttribute("source"); if (!String.IsNullOrEmpty(sourceFile)) { _topicContent.ContentFile = new BuildFilePath(sourceFile); _topicContent.Load(); } } else { if (reader.ReadToDescendant(ReferenceContent.TagName)) { _topicContent.ReadXml(reader); } } } }
/// <summary> /// This reads and sets its state or attributes stored in a <c>XML</c> format /// with the given reader. /// </summary> /// <param name="reader"> /// The reader with which the <c>XML</c> attributes of this object are accessed. /// </param> /// <exception cref="ArgumentNullException"> /// If the <paramref name="reader"/> is <see langword="null"/>. /// </exception> public override void ReadXml(XmlReader reader) { BuildExceptions.NotNull(reader, "reader"); Debug.Assert(reader.NodeType == XmlNodeType.Element); if (reader.NodeType != XmlNodeType.Element) { return; } if (!String.Equals(reader.Name, TagName, StringComparison.OrdinalIgnoreCase)) { Debug.Assert(false, String.Format( "The element name '{0}' does not match the expected '{1}'.", reader.Name, TagName)); return; } if (reader.IsEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (String.Equals(reader.Name, "propertyGroup", StringComparison.OrdinalIgnoreCase)) { this.ReadPropertyGroup(reader); } else if (String.Equals(reader.Name, "content", StringComparison.OrdinalIgnoreCase)) { if (_content == null) { _content = new ReferenceContent(); } if (reader.IsEmptyElement) { string sourceFile = reader.GetAttribute("source"); if (!String.IsNullOrEmpty(sourceFile)) { _content.ContentFile = new BuildFilePath(sourceFile); _content.Load(); } } else { if (reader.ReadToDescendant(ReferenceContent.TagName)) { _content.ReadXml(reader); } } } else if (String.Equals(reader.Name, "contents", StringComparison.OrdinalIgnoreCase)) { this.ReadContents(reader); } else if (String.Equals(reader.Name, "filters", StringComparison.OrdinalIgnoreCase)) { this.ReadFilters(reader); } } else if (reader.NodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, TagName, StringComparison.OrdinalIgnoreCase)) { break; } } } }