public void Add(string topicId) { BuildExceptions.NotNullNotEmpty(topicId, "topicId"); if (ConceptualUtils.IsValidId(topicId) == false) { throw new ArgumentException("topicId"); } if (_dicTopicId != null) { _dicTopicId.Add(topicId, true); } }
private void ReadTopics(XmlReader reader) { if (reader.IsEmptyElement) { return; } // handle the default topic id... string defaultTopic = reader.GetAttribute("default"); if (ConceptualUtils.IsValidId(defaultTopic)) { _defaultTopic = defaultTopic; } string startName = reader.Name; while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { if (String.Equals(reader.Name, ConceptualItem.TagName, StringComparison.OrdinalIgnoreCase)) { ConceptualItem topicItem = ConceptualItem.Create( reader.GetAttribute("type")); if (topicItem != null) { topicItem.Content = this; topicItem.BeginInit(); topicItem.ReadXml(reader); topicItem.EndInit(); this.Add(topicItem); } } } else if (reader.NodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, startName, StringComparison.OrdinalIgnoreCase)) { break; } } } }
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)) { return; } string nodeText = reader.GetAttribute("id"); if (ConceptualUtils.IsValidId(nodeText)) { _topicId = nodeText; } nodeText = reader.GetAttribute("visible"); if (!String.IsNullOrEmpty(nodeText)) { _isVisible = Convert.ToBoolean(nodeText); } nodeText = reader.GetAttribute("revision"); if (!String.IsNullOrEmpty(nodeText)) { _revNumber = Convert.ToInt32(nodeText); } string nodeName = null; XmlNodeType nodeType = XmlNodeType.None; while (reader.Read()) { nodeName = reader.Name; nodeType = reader.NodeType; if (nodeType == XmlNodeType.Element) { switch (nodeName) { case "title": nodeText = reader.ReadString(); if (!String.IsNullOrEmpty(nodeText)) { _topicTitle = nodeText; } break; case "path": if (_filePath == null) { _filePath = new BuildFilePath(); } _filePath.ReadXml(reader); break; case "excludes": this.OnReadExcludes(reader); break; case "metadata": this.OnReadMetadata(reader); break; case "topic": ConceptualItem topicItem = ConceptualItem.Create( reader.GetAttribute("type")); if (topicItem != null) { topicItem.Content = this.Content; topicItem.BeginInit(); topicItem.ReadXml(reader); topicItem.EndInit(); this.Add(topicItem); } break; default: this.OnReadXmlTag(reader); break; } } else if (nodeType == XmlNodeType.EndElement) { if (String.Equals(nodeName, TagName, StringComparison.OrdinalIgnoreCase)) { break; } } } }
private void ReadTopic(XmlReader reader, ConceptualContent content, ConceptualItem parentItem) { XmlNodeType nodeType = XmlNodeType.None; string nodeName = null; int revNumber = 1; while (reader.Read()) { nodeType = reader.NodeType; if (nodeType == XmlNodeType.Element) { nodeName = reader.Name; if (String.Equals(nodeName, "Topic")) { bool isVisible = true; string docId = reader.GetAttribute("id"); if (ConceptualUtils.IsValidId(docId)) { string textTemp = reader.GetAttribute("visible"); if (!String.IsNullOrEmpty(textTemp)) { isVisible = Convert.ToBoolean(textTemp); } string docTitle = reader.GetAttribute("title"); if (!String.IsNullOrEmpty(docTitle)) { string fullPath = Path.Combine(_contentDir, docId + ".aml"); ConceptualTopic docItem = new ConceptualTopic( new BuildFilePath(fullPath), docTitle, docId); docItem.Content = content; docItem.BeginInit(); docItem.Visible = isVisible; docItem.TopicRevisions = revNumber; //docItem.IncludesTopicId = true; docItem.EndInit(); // handle the sub-item... if (!reader.IsEmptyElement) { ReadTopic(reader, content, docItem); } parentItem.Add(docItem); } } } else if (String.Equals(nodeName, "HelpKeyword")) { string index = reader.GetAttribute("index"); string term = reader.GetAttribute("term"); if (!String.IsNullOrEmpty(index) && !String.IsNullOrEmpty(term)) { KeywordItem keyword = new KeywordItem( KeywordItem.ParseIndex(index), term); parentItem.Keywords.Add(keyword); } } } else if (nodeType == XmlNodeType.EndElement) { if (String.Equals(reader.Name, "Topic")) { break; } } } }