/// <summary> /// Parse the data from specified Uri into a document. /// </summary> /// <param name="document">The document instance to store the gained data in.</param> /// <param name="xmlTextReader">XmlTextReader instance</param> protected virtual void Parse(OpmlDocument document, System.Xml.XmlReader xmlTextReader) { try { System.Diagnostics.Debug.Assert(xmlTextReader != null); // xmlTextReader.MoveToContent(); if (xmlTextReader.Name != "opml") { throw new FormatException(xmlTextReader.BaseURI + " is no valid Opml File"); } // read the stream forward while not end of file int currentDepth = -1; System.Collections.Hashtable nodeLevels = new System.Collections.Hashtable(); // while (!xmlTextReader.EOF) { // process head if (xmlTextReader.Name == "head" && xmlTextReader.NodeType == XmlNodeType.Element) { document.Head = new OpmlHead(xmlTextReader); } // process outline and child outlines else if (xmlTextReader.Name == "outline" && xmlTextReader.NodeType == XmlNodeType.Element) { currentDepth = xmlTextReader.Depth; // OpmlOutline o = OnCreateOutline(xmlTextReader); if (currentDepth == 2) { document.Body.Items.Add(o); // new node nodeLevels.Clear(); } else { ((OpmlOutline)nodeLevels[xmlTextReader.Depth - 1]).Items.Add(o); } nodeLevels[xmlTextReader.Depth] = o; } else { xmlTextReader.Read(); xmlTextReader.MoveToContent(); } } } finally { if (xmlTextReader != null) { xmlTextReader.Close(); } } }
private void DetachItem(OpmlOutline item) { System.Diagnostics.Debug.Assert(item != null); // if (_body != null) { item.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(_body.OnSubItemPropertyChanged); } else { item.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(_outline.OnSubItemPropertyChanged); } item.SetDocument(null); item.SetParent(null); // SetDirtyState(); }
/// <summary>Determines whether the OpmlOutlineCollection contains a specific value.</summary> public bool Contains(OpmlOutline value) { return(base.List.Contains(value as object)); }
/// <summary>Inserts an IOpmlOutline to the OpmlOutlineCollection at the specified position.</summary> public void Insert(int index, OpmlOutline value) { base.List.Insert(index, value as object); }
/// <summary>Removes an item to the OpmlOutlineCollection.</summary> public void Remove(OpmlOutline value) { base.List.Remove(value as object); }
/// <summary>Adds an item to the IOpmlOutlineCollection.</summary> public int Add(OpmlOutline value) { return(base.List.Add(value as object)); }
/// <summary>Initializes a new instance of OpmlOutlineCollection</summary> public OpmlOutlineCollection(OpmlOutline outline) { _outline = outline; }
/// <summary>Sets the outline that this outline is assigned to.</summary> internal void SetParent(OpmlOutline value) { this._outline = value; }