//internal int AddRaw(XTextElement element) //{ // return this.List.Add(element); //} /// <summary> /// 向列表添加对象 /// </summary> /// <param name="element">对象</param> /// <returns>对象在列表中的序号</returns> public int Add(DomElement element) { this.CheckEOF(-1); if (myEOFElement != null) { if (myEOFElement.GetType().IsInstanceOfType(element) == false) { this.List.Insert(this.Count - 1, element); if (this.myOwnerElement != null) { element.Parent = myOwnerElement; element.OwnerDocument = myOwnerElement.OwnerDocument; } return(this.Count - 1); } else { return(-1); } } else { if (this.myOwnerElement != null) { element.Parent = myOwnerElement; } return(this.List.Add(element)); } }
/// <summary> /// 沿着DOM树逐级向上查找指定类型的父容器 /// </summary> /// <param name="ParentType">父容器类型</param> /// <param name="includeThis">查找时是否包含元素本身</param> /// <returns>找到的父容器对象</returns> public virtual DomElement GetOwnerParent(Type ParentType, bool includeThis) { DomElement c = includeThis ? this : this.Parent; while (c != null) { Type ct = c.GetType(); if (ct.Equals(ParentType) || ct.IsSubclassOf(ParentType)) { return(c); } c = c.Parent; } return(null); }