System.Xml.DtdParser.ScanNmtoken C# (CSharp) Méthode

ScanNmtoken() private méthode

private ScanNmtoken ( ) : void
Résultat void
        private void ScanNmtoken()
        {
            _tokenStartPos = _curPos;

            for (;;)
            {
                unsafe
                {
                    for (;;)
                    {
                        if ( _xmlCharType.IsNCNameSingleChar(_chars[_curPos]) || _chars[_curPos] == ':' )
                        {
                            _curPos++;
                        }
#if XML10_FIFTH_EDITION
                        else if (curPos + 1 < charsUsed && xmlCharType.IsNCNameSurrogateChar(chars[curPos + 1], chars[curPos])) {
                            curPos += 2;
                        }
#endif
                        else
                        {
                            break;
                        }
                    }
                }

                if (_curPos < _charsUsed
#if XML10_FIFTH_EDITION
                    && ( !xmlCharType.IsNCNameHighSurrogateChar( chars[curPos] ) || curPos + 1 < charsUsed ) 
#endif
                    )
                {
                    if (_curPos - _tokenStartPos == 0)
                    {
                        Throw(_curPos, SR.Xml_BadNameChar, XmlException.BuildCharExceptionArgs(_chars, _charsUsed, _curPos));
                    }
                    return;
                }

                int len = _curPos - _tokenStartPos;
                _curPos = _tokenStartPos;
                if (ReadData() == 0)
                {
                    if (len > 0)
                    {
                        _tokenStartPos = _curPos;
                        _curPos += len;
                        return;
                    }
                    Throw(_curPos, SR.Xml_UnexpectedEOF, "NmToken");
                }
                _tokenStartPos = _curPos;
                _curPos += len;
            }
        }