private void ReadXmlContents(XmlReader reader) { string startElement = reader.Name; Debug.Assert(String.Equals(startElement, "contents")); if (reader.IsEmptyElement) { return; } while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (!reader.IsEmptyElement && String.Equals(reader.Name, "content", StringComparison.OrdinalIgnoreCase)) { switch (reader.GetAttribute("type").ToLower()) { case "shared": if (_sharedContent == null) { _sharedContent = new SharedContent(); } if (reader.ReadToDescendant(SharedContent.TagName)) { _sharedContent.ReadXml(reader); } break; case "include": if (_includeContent == null) { _includeContent = new IncludeContent(); } if (reader.ReadToDescendant(IncludeContent.TagName)) { _includeContent.ReadXml(reader); } break; } } } else if (reader.NodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, startElement, StringComparison.OrdinalIgnoreCase)) { break; } } } }