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;
}