System.Security.SecurityDocument.InternalGetElement C# (CSharp) Method

InternalGetElement() private method

private InternalGetElement ( int &position, bool bCreate ) : SecurityElement
position int
bCreate bool
return SecurityElement
        internal SecurityElement InternalGetElement( ref int position, bool bCreate )
        {
            if (m_data.Length <= position)
                throw new XmlSyntaxException();

            if (m_data[position++] != c_element)
                throw new XmlSyntaxException();

            SecurityElement elCurrent = null;
            String strTag = GetString( ref position, bCreate );
            if (bCreate)
                elCurrent = new SecurityElement( strTag );

            while (m_data[position] == c_attribute)
            {
                position++;
                String strName = GetString( ref position, bCreate );
                String strValue = GetString( ref position, bCreate );
                if (bCreate)
                    elCurrent.AddAttribute( strName, strValue );
            }

            if (m_data[position] == c_text)
            {
                position++;
                String strText = GetString( ref position, bCreate );
                if (bCreate)
                    elCurrent.m_strText = strText;
            }

            while (m_data[position] != c_children)
            {
                SecurityElement elChild = InternalGetElement( ref position, bCreate );
                if (bCreate)
                    elCurrent.AddChild( elChild );
            }
            position++;

            return elCurrent;
        }