Пример #1
0
        private static XmlNode NormalizeText(XmlNode n)
        {
            XmlNode retnode = null;

            while (n.IsText())
            {
                retnode = n;
                n       = n.PreviousSibling;

                if (n == null)
                {
                    XmlNode intnode = retnode;
                    while (true)
                    {
                        if (intnode.ParentNode != null && intnode.ParentNode.NodeType == XmlNodeType.EntityReference)
                        {
                            if (intnode.ParentNode.PreviousSibling != null)
                            {
                                n = intnode.ParentNode.PreviousSibling;
                                break;
                            }
                            else
                            {
                                intnode = intnode.ParentNode;
                                if (intnode == null)
                                {
                                    break;
                                }
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                }

                if (n == null)
                {
                    break;
                }
                while (n.NodeType == XmlNodeType.EntityReference)
                {
                    n = n.LastChild;
                    // The only possibility of this happening is when
                    // XmlEntityReference is not expanded.
                    // All entities are expanded when created in XmlDocument.
                    // If you try to create standalone XmlEntityReference
                    // it is not expanded until you set its parent.
                    Debug.Assert(n != null);
                }
            }
            return(retnode);
        }
Пример #2
0
        private XmlNode TextEnd(XmlNode node)
        {
            XmlNode end;

            do
            {
                end = node;
                node = NextSibling(node);
            }
            while (node != null
                   && node.IsText());
            return end;
        }
Пример #3
0
        private XmlNode TextStart(XmlNode node)
        {
            XmlNode start;

            do
            {
                start = node;
                node = PreviousSibling(node);
            }
            while (node != null
                   && node.IsText());
            return start;
        }
Пример #4
0
 private XmlNode PreviousTextTail(XmlNode node, XmlNode text)
 {
     if (text != null)
     {
         return text;
     }
     if (!node.IsText())
     {
         return null;
     }
     XmlNode sibling = node.PreviousSibling;
     while (sibling == null)
     {
         node = node.ParentNode;
         if (node == null
             || node.NodeType != XmlNodeType.EntityReference)
         {
             return null;
         }
         sibling = node.PreviousSibling;
     }
     while (sibling != null)
     {
         switch (sibling.NodeType)
         {
             case XmlNodeType.EntityReference:
                 sibling = sibling.LastChild;
                 break;
             case XmlNodeType.Text:
             case XmlNodeType.CDATA:
             case XmlNodeType.Whitespace:
             case XmlNodeType.SignificantWhitespace:
                 return sibling;
             default:
                 return null;
         }
     }
     return null;
 }
Пример #5
0
        private static XmlNode NormalizeText(XmlNode n)
        {
            XmlNode retnode = null;
            while (n.IsText())
            {
                retnode = n;
                n = n.PreviousSibling;

                if (n == null)
                {
                    XmlNode intnode = retnode;
                    while (true)
                    {
                        if (intnode.ParentNode != null && intnode.ParentNode.NodeType == XmlNodeType.EntityReference)
                        {
                            if (intnode.ParentNode.PreviousSibling != null)
                            {
                                n = intnode.ParentNode.PreviousSibling;
                                break;
                            }
                            else
                            {
                                intnode = intnode.ParentNode;
                                if (intnode == null)
                                    break;
                            }
                        }
                        else
                            break;
                    }
                }

                if (n == null)
                    break;
                while (n.NodeType == XmlNodeType.EntityReference)
                {
                    n = n.LastChild;
                    // The only possibility of this happening is when
                    // XmlEntityReference is not expanded.
                    // All entities are expanded when created in XmlDocument.
                    // If you try to create standalone XmlEntityReference
                    // it is not expanded until you set its parent.
                    Debug.Assert(n != null);
                }
            }
            return retnode;
        }