Пример #1
0
        //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));
            }
        }
Пример #2
0
        /// <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);
        }