System.Xml.XPathNodePointer.MoveToNextAttribute C# (CSharp) Method

MoveToNextAttribute() private method

private MoveToNextAttribute ( bool bFirst ) : bool
bFirst bool
return bool
        internal bool MoveToNextAttribute(bool bFirst)
        {
            RealFoliate();
            AssertValid();
            if (_node != null)
            {
                if (bFirst && (_column != null || _node.NodeType != XmlNodeType.Element))
                    return false;
                if (!bFirst)
                {
                    if (_column != null && _column.ColumnMapping != MappingType.Attribute)
                        return false;
                    if (_column == null && _node.NodeType != XmlNodeType.Attribute)
                        return false;
                }
                if (!IsFoliated(_node))
                {
                    DataColumn c = _column;
                    while ((c = NextColumn(Row, c, true)) != null)
                    {
                        if (c.Namespace != StrReservedXmlns)
                        {
                            MoveTo(_node, c, false);
                            return true;
                        }
                    }
                    return false;
                }
                else
                {
                    if (bFirst)
                    {
                        XmlAttributeCollection attrs = _node.Attributes;
                        foreach (XmlAttribute attr in attrs)
                        {
                            if (attr.NamespaceURI != StrReservedXmlns)
                            {
                                MoveTo(attr, null, false);
                                return true;
                            }
                        }
                    }
                    else
                    {
                        XmlAttributeCollection attrs = ((XmlAttribute)_node).OwnerElement.Attributes;
                        bool bFound = false;
                        foreach (XmlAttribute attr in attrs)
                        {
                            if (bFound && attr.NamespaceURI != StrReservedXmlns)
                            {
                                MoveTo(attr, null, false);
                                return true;
                            }
                            if (attr == _node)
                                bFound = true;
                        }
                    }
                }
            }
            return false;
        }