예제 #1
0
        /// <summary>
        /// Inserts foster parented characters.
        /// </summary>
        ///
        /// <param name="text">
        /// The text.
        /// </param>
        /// <param name="table">
        /// The table.
        /// </param>
        /// <param name="stackParent">
        /// The stack parent.
        /// </param>

        override protected void InsertFosterParentedCharacters(string text, DomObject table, DomObject stackParent)
        {
            IDomObject parent = table.ParentNode;

            if (parent != null)
            {
                // always an element if not null
                IDomObject previousSibling = table.PreviousSibling;
                if (previousSibling != null &&
                    previousSibling.NodeType == NodeType.TEXT_NODE)
                {
                    IDomText lastAsText = (IDomText)previousSibling;
                    lastAsText.NodeValue += text;
                    return;
                }
                parent.InsertBefore(Document.CreateTextNode(text), table);
                return;
            }
            // fall through

            IDomText lastChild = stackParent.LastChild as IDomText;

            if (lastChild != null)
            {
                lastChild.NodeValue += text;
                return;
            }
            else
            {
                stackParent.AppendChildUnsafe(Document.CreateTextNode(text));
            }
        }
예제 #2
0
        /// <summary>
        /// Inserts a foster parented child.
        /// </summary>
        ///
        /// <param name="child">
        /// The child.
        /// </param>
        /// <param name="table">
        /// The table.
        /// </param>
        /// <param name="stackParent">
        /// The stack parent.
        /// </param>

        override protected void InsertFosterParentedChild(DomObject child, DomObject table, DomObject stackParent)
        {
            IDomObject parent = table.ParentNode;

            if (parent != null)
            {
                // always an element if not null
                parent.InsertBefore(child, table);
            }
            else
            {
                stackParent.AppendChildUnsafe(child);
            }
        }