MoveToFirstChild() private méthode

private MoveToFirstChild ( ) : bool
Résultat bool
 private static void WriteBoundElementContentTo(DataPointer dp, XmlWriter w)
 {
     if (!dp.IsEmptyElement && dp.MoveToFirstChild())
     {
         do
         {
             WriteTo(dp, w);
         }while (dp.MoveToNextSibling());
         dp.MoveToParent();
     }
 }
Exemple #2
0
        private static void WriteTo(DataPointer dp, XmlWriter w)
        {
            switch (dp.NodeType)
            {
            case XmlNodeType.Attribute:
                if (!dp.IsDefault)
                {
                    w.WriteStartAttribute(dp.Prefix, dp.LocalName, dp.NamespaceURI);

                    if (dp.MoveToFirstChild())
                    {
                        do
                        {
                            WriteTo(dp, w);
                        }while (dp.MoveToNextSibling());

                        dp.MoveToParent();
                    }

                    w.WriteEndAttribute();
                }
                break;

            case XmlNodeType.Element:
                WriteBoundElementTo(dp, w);
                break;

            case XmlNodeType.Text:
                w.WriteString(dp.Value);
                break;

            default:
                Debug.Assert(((IXmlDataVirtualNode)dp).IsOnColumn(null));
                if (dp.GetNode() != null)
                {
                    dp.GetNode().WriteTo(w);
                }
                break;
            }
        }
Exemple #3
0
        private XmlNode CloneTreeInternal(DataPointer other)
        {
            Debug.Assert(_ignoreDataSetEvents == true);
            Debug.Assert(_ignoreXmlEvents == true);
            Debug.Assert(IsFoliationEnabled == false);

            // Create the diconnected tree based on the other navigator
            XmlNode newNode = CloneNode(other);

            DataPointer dp = new DataPointer(other);
            try
            {
                dp.AddPointer();
                if (newNode.NodeType == XmlNodeType.Element)
                {
                    int cAttributes = dp.AttributeCount;
                    for (int i = 0; i < cAttributes; i++)
                    {
                        dp.MoveToOwnerElement();
                        if (dp.MoveToAttribute(i))
                        {
                            newNode.Attributes.Append((XmlAttribute)CloneTreeInternal(dp));
                        }
                    }

                    dp.MoveTo(other);
                }

                for (bool fMore = dp.MoveToFirstChild(); fMore; fMore = dp.MoveToNextSibling())
                    newNode.AppendChild(CloneTreeInternal(dp));
            }
            finally
            {
                dp.SetNoLongerUse();
            }

            return newNode;
        }
Exemple #4
0
        public override XmlNode CloneNode(bool deep)
        {
            XmlDataDocument clone = (XmlDataDocument)(base.CloneNode(false));
            clone.Init(DataSet.Clone());

            clone._dataSet.EnforceConstraints = _dataSet.EnforceConstraints;
            Debug.Assert(clone.FirstChild == null);
            if (deep)
            {
                DataPointer dp = new DataPointer(this, this);
                try
                {
                    dp.AddPointer();
                    for (bool fMore = dp.MoveToFirstChild(); fMore; fMore = dp.MoveToNextSibling())
                    {
                        XmlNode cloneNode;
                        if (dp.NodeType == XmlNodeType.Element)
                            cloneNode = clone.CloneTree(dp);
                        else
                            cloneNode = clone.CloneNode(dp);
                        clone.AppendChild(cloneNode);
                    }
                }
                finally
                {
                    dp.SetNoLongerUse();
                }
            }

            return clone;
        }
        private static void WriteTo( DataPointer dp, XmlWriter w ) {
            switch ( dp.NodeType ) {
                case XmlNodeType.Attribute:
                    if ( !dp.IsDefault ) {
                        w.WriteStartAttribute( dp.Prefix, dp.LocalName, dp.NamespaceURI );

                        if ( dp.MoveToFirstChild() ) {
                            do {
                                WriteTo( dp, w );
                            }
                            while ( dp.MoveToNextSibling() );

                            dp.MoveToParent();
                        }

                        w.WriteEndAttribute();
                    }
                    break;

                case XmlNodeType.Element:
                    WriteBoundElementTo( dp, w );
                    break;

                case XmlNodeType.Text:
                    w.WriteString(dp.Value);
                    break;

                default:
                    Debug.Assert( ((IXmlDataVirtualNode)dp).IsOnColumn( null ) );
                    if ( dp.GetNode() != null )
                        dp.GetNode().WriteTo( w );
                    break;
            }
        }
        private static void WriteBoundElementContentTo( DataPointer dp, XmlWriter w ) {
            if ( !dp.IsEmptyElement && dp.MoveToFirstChild() ) {
                do {
                    WriteTo( dp, w );
                }
                while ( dp.MoveToNextSibling() );

                dp.MoveToParent();
            }
        }
        private static void WriteTo(DataPointer dp, XmlWriter w)
        {
            switch (dp.NodeType)
            {
                case XmlNodeType.Element:
                    WriteBoundElementTo(dp, w);
                    return;

                case XmlNodeType.Attribute:
                    if (dp.IsDefault)
                    {
                        break;
                    }
                    w.WriteStartAttribute(dp.Prefix, dp.LocalName, dp.NamespaceURI);
                    if (dp.MoveToFirstChild())
                    {
                        do
                        {
                            WriteTo(dp, w);
                        }
                        while (dp.MoveToNextSibling());
                        dp.MoveToParent();
                    }
                    w.WriteEndAttribute();
                    return;

                case XmlNodeType.Text:
                    w.WriteString(dp.Value);
                    return;

                default:
                    if (dp.GetNode() != null)
                    {
                        dp.GetNode().WriteTo(w);
                    }
                    break;
            }
        }