InsertNodeAtEnd() public static method

public static InsertNodeAtEnd ( Node element, Node node ) : void
element Node
node Node
return void
示例#1
0
        public virtual INode InsertBefore(INode newChild, INode refChild)
        {
            // TODO - handle newChild already in tree

            if (newChild == null)
            {
                return(null);
            }
            if (!(newChild is DomNodeImpl))
            {
                throw new DomException(DomException.WRONG_DOCUMENT, "newChild not instanceof DomNodeImpl");
            }
            var newCh = (DomNodeImpl)newChild;

            if (Adaptee.Type == Node.ROOT_NODE)
            {
                if (newCh.Adaptee.Type != Node.DOC_TYPE_TAG && newCh.Adaptee.Type != Node.PROC_INS_TAG)
                {
                    throw new DomException(DomException.HIERARCHY_REQUEST, "newChild cannot be a child of this node");
                }
            }
            else if (Adaptee.Type == Node.START_TAG)
            {
                if (newCh.Adaptee.Type != Node.START_TAG && newCh.Adaptee.Type != Node.START_END_TAG &&
                    newCh.Adaptee.Type != Node.COMMENT_TAG && newCh.Adaptee.Type != Node.TEXT_NODE &&
                    newCh.Adaptee.Type != Node.CDATA_TAG)
                {
                    throw new DomException(DomException.HIERARCHY_REQUEST, "newChild cannot be a child of this node");
                }
            }
            if (refChild == null)
            {
                Node.InsertNodeAtEnd(Adaptee, newCh.Adaptee);
                if (Adaptee.Type == Node.START_END_TAG)
                {
                    Adaptee.Type = Node.START_TAG;
                }
            }
            else
            {
                Node refNode = Adaptee.Content;
                while (refNode != null)
                {
                    if (refNode.Adapter == refChild)
                    {
                        break;
                    }
                    refNode = refNode.Next;
                }
                if (refNode == null)
                {
                    throw new DomException(DomException.NOT_FOUND, "refChild not found");
                }
                Node.InsertNodeBeforeElement(refNode, newCh.Adaptee);
            }
            return(newChild);
        }
示例#2
0
        public virtual INode AppendChild(INode newChild)
        {
            // TODO - handle newChild already in tree

            if (newChild == null)
            {
                return(null);
            }

            if (!(newChild is DomNodeImpl))
            {
                throw new DomException(DomException.WRONG_DOCUMENT, "newChild not instanceof DomNodeImpl");
            }

            var newCh = (DomNodeImpl)newChild;

            if (Adaptee.Type == Node.ROOT_NODE)
            {
                if (newCh.Adaptee.Type != Node.DOC_TYPE_TAG && newCh.Adaptee.Type != Node.PROC_INS_TAG)
                {
                    throw new DomException(DomException.HIERARCHY_REQUEST, "newChild cannot be a child of this node");
                }
            }
            else if (Adaptee.Type == Node.START_TAG)
            {
                if (newCh.Adaptee.Type != Node.START_TAG && newCh.Adaptee.Type != Node.START_END_TAG &&
                    newCh.Adaptee.Type != Node.COMMENT_TAG && newCh.Adaptee.Type != Node.TEXT_NODE &&
                    newCh.Adaptee.Type != Node.CDATA_TAG)
                {
                    throw new DomException(DomException.HIERARCHY_REQUEST, "newChild cannot be a child of this node");
                }
            }

            Node.InsertNodeAtEnd(Adaptee, newCh.Adaptee);

            if (Adaptee.Type == Node.START_END_TAG)
            {
                Adaptee.Type = Node.START_TAG;
            }

            return(newChild);
        }