⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmlscanner.java

📁 java高级使用教程 全书一共分六章
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
		break;
		case ST_LT_LINK:
		switch ( ch )
		    {
		    case ' ': case '\t': case '\n': case '\r':
		    state = ST_LINK; break;
		    case '>': state = ST_GROUND; break;
		    default: state = ST_LTJUNK; break;
		    }
		break;
		case ST_LINK:
		switch ( ch )
		    {
		    case '>': state = ST_GROUND; break;
		    case '"': state = ST_LINK_QUOTE; break;
		    case 'H': case 'h': state = ST_LINK_H; break;
		    default: break;
		    }
		break;
		case ST_LINK_QUOTE:
		switch ( ch )
		    {
		    case '"': state = ST_LINK; break;
		    default: break;
		    }
		break;
		case ST_LINK_H:
		switch ( ch )
		    {
		    case 'R': case 'r': state = ST_LINK_HR; break;
		    case '"': state = ST_LINK_QUOTE; break;
		    default: state = ST_LINK; break;
		    }
		break;
		case ST_LINK_HR:
		switch ( ch )
		    {
		    case 'E': case 'e': state = ST_LINK_HRE; break;
		    case '"': state = ST_LINK_QUOTE; break;
		    default: state = ST_LINK; break;
		    }
		break;
		case ST_LINK_HRE:
		switch ( ch )
		    {
		    case 'F': case 'f': state = ST_LINK_HREF; break;
		    case '"': state = ST_LINK_QUOTE; break;
		    default: state = ST_LINK; break;
		    }
		break;
		case ST_LINK_HREF:
		switch ( ch )
		    {
		    case ' ': case '\t': case '\n': case '\r': break;
		    case '=': state = ST_LINK_HREF_EQUAL; break;
		    case '"': state = ST_LINK_QUOTE; break;
		    default: state = ST_LINK; break;
		    }
		break;
		case ST_LINK_HREF_EQUAL:
		// Start accumulating a URL.
		urlBuf.setLength( 0 );
		gettingUrl = true;
		switch ( ch )
		    {
		    case ' ': case '\t': case '\n': case '\r': break;
		    case '"': state = ST_LINKHREF_Q; break;
		    default:
		    // Accumulate the URL.
		    urlBuf.append( ch );
		    state = ST_LINKHREF_NQ;
		    break;
		    }
		break;
		case ST_LINKHREF_Q:
		switch ( ch )
		    {
		    case '"':
		    // Got a complete URL.
		    callLINKHREF( urlBuf.toString() );
		    gettingUrl = false;
		    state = ST_LINK;
		    break;
		    default:
		    // Accumulate the URL.
		    urlBuf.append( ch );
		    break;
		    }
		break;
		case ST_LINKHREF_NQ:
		switch ( ch )
		    {
		    case '>':
		    case ' ': case '\t': case '\n': case '\r':
		    // Got a complete URL.
		    callLINKHREF( urlBuf.toString() );
		    gettingUrl = false;
		    state = ( ch == '>' ? ST_GROUND : ST_LINK );
		    break;
		    default:
		    // Accumulate the URL.
		    urlBuf.append( ch );
		    break;
		    }
		break;
		case ST_LT_BO:
		switch ( ch )
		    {
		    case 'D': case 'd': state = ST_LT_BOD; break;
		    case '>': state = ST_GROUND; break;
		    default: state = ST_LTJUNK; break;
		    }
		break;
		case ST_LT_BOD:
		switch ( ch )
		    {
		    case 'Y': case 'y': state = ST_LT_BODY; break;
		    case '>': state = ST_GROUND; break;
		    default: state = ST_LTJUNK; break;
		    }
		break;
		case ST_LT_BODY:
		switch ( ch )
		    {
		    case ' ': case '\t': case '\n': case '\r':
		    state = ST_BODY; break;
		    case '>': state = ST_GROUND; break;
		    default: state = ST_LTJUNK; break;
		    }
		break;
		case ST_BODY:
		switch ( ch )
		    {
		    case '>': state = ST_GROUND; break;
		    case '"': state = ST_BODY_QUOTE; break;
		    case 'B': case 'b': state = ST_BODY_B; break;
		    default: break;
		    }
		break;
		case ST_BODY_QUOTE:
		switch ( ch )
		    {
		    case '"': state = ST_BODY; break;
		    default: break;
		    }
		break;
		case ST_BODY_B:
		switch ( ch )
		    {
		    case 'A': case 'a': state = ST_BODY_BA; break;
		    case '"': state = ST_BODY_QUOTE; break;
		    default: state = ST_BODY; break;
		    }
		break;
		case ST_BODY_BA:
		switch ( ch )
		    {
		    case 'C': case 'c': state = ST_BODY_BAC; break;
		    case '"': state = ST_BODY_QUOTE; break;
		    default: state = ST_BODY; break;
		    }
		break;
		case ST_BODY_BAC:
		switch ( ch )
		    {
		    case 'K': case 'k': state = ST_BODY_BACK; break;
		    case '"': state = ST_BODY_QUOTE; break;
		    default: state = ST_BODY; break;
		    }
		break;
		case ST_BODY_BACK:
		switch ( ch )
		    {
		    case 'G': case 'g': state = ST_BODY_BACKG; break;
		    case '"': state = ST_BODY_QUOTE; break;
		    default: state = ST_BODY; break;
		    }
		break;
		case ST_BODY_BACKG:
		switch ( ch )
		    {
		    case 'R': case 'r': state = ST_BODY_BACKGR; break;
		    case '"': state = ST_BODY_QUOTE; break;
		    default: state = ST_BODY; break;
		    }
		break;
		case ST_BODY_BACKGR:
		switch ( ch )
		    {
		    case 'O': case 'o': state = ST_BODY_BACKGRO; break;
		    case '"': state = ST_BODY_QUOTE; break;
		    default: state = ST_BODY; break;
		    }
		break;
		case ST_BODY_BACKGRO:
		switch ( ch )
		    {
		    case 'U': case 'u': state = ST_BODY_BACKGROU; break;
		    case '"': state = ST_BODY_QUOTE; break;
		    default: state = ST_BODY; break;
		    }
		break;
		case ST_BODY_BACKGROU:
		switch ( ch )
		    {
		    case 'N': case 'n': state = ST_BODY_BACKGROUN; break;
		    case '"': state = ST_BODY_QUOTE; break;
		    default: state = ST_BODY; break;
		    }
		break;
		case ST_BODY_BACKGROUN:
		switch ( ch )
		    {
		    case 'D': case 'd': state = ST_BODY_BACKGROUND; break;
		    case '"': state = ST_BODY_QUOTE; break;
		    default: state = ST_BODY; break;
		    }
		break;
		case ST_BODY_BACKGROUND:
		switch ( ch )
		    {
		    case ' ': case '\t': case '\n': case '\r': break;
		    case '=': state = ST_BODY_BACKGROUND_EQUAL; break;
		    case '"': state = ST_BODY_QUOTE; break;
		    default: state = ST_BODY; break;
		    }
		break;
		case ST_BODY_BACKGROUND_EQUAL:
		// Start accumulating a URL.
		urlBuf.setLength( 0 );
		gettingUrl = true;
		switch ( ch )
		    {
		    case ' ': case '\t': case '\n': case '\r': break;
		    case '"': state = ST_BODYBACKGROUND_Q; break;
		    default:
		    // Accumulate the URL.
		    urlBuf.append( ch );
		    state = ST_BODYBACKGROUND_NQ;
		    break;
		    }
		break;
		case ST_BODYBACKGROUND_Q:
		switch ( ch )
		    {
		    case '"':
		    // Got a complete URL.
		    callBODYBACKGROUND( urlBuf.toString() );
		    gettingUrl = false;
		    state = ST_BODY;
		    break;
		    default:
		    // Accumulate the URL.
		    urlBuf.append( ch );
		    break;
		    }
		break;
		case ST_BODYBACKGROUND_NQ:
		switch ( ch )
		    {
		    case '>':
		    case ' ': case '\t': case '\n': case '\r':
		    // Got a complete URL.
		    callBODYBACKGROUND( urlBuf.toString() );
		    gettingUrl = false;
		    state = ( ch == '>' ? ST_GROUND : ST_BODY );
		    break;
		    default:
		    // Accumulate the URL.
		    urlBuf.append( ch );
		    break;
		    }
		break;
		case ST_LT_IN:
		switch ( ch )
		    {
		    case 'P': case 'p': state = ST_LT_INP; break;
		    case '>': state = ST_GROUND; break;
		    default: state = ST_LTJUNK; break;
		    }
		break;
		case ST_LT_INP:
		switch ( ch )
		    {
		    case 'U': case 'u': state = ST_LT_INPU; break;
		    case '>': state = ST_GROUND; break;
		    default: state = ST_LTJUNK; break;
		    }
		break;
		case ST_LT_INPU:
		switch ( ch )
		    {
		    case 'T': case 't': state = ST_LT_INPUT; break;
		    case '>': state = ST_GROUND; break;
		    default: state = ST_LTJUNK; break;
		    }
		break;
		case ST_LT_INPUT:
		switch ( ch )
		    {
		    case ' ': case '\t': case '\n': case '\r':
		    state = ST_INPUT; break;
		    case '>': state = ST_GROUND; break;
		    default: state = ST_LTJUNK; break;
		    }
		break;
		case ST_INPUT:
		switch ( ch )
		    {
		    case '>': state = ST_GROUND; break;
		    case '"': state = ST_INPUT_QUOTE; break;
		    case 'S': case 's': state = ST_INPUT_S; break;
		    default: break;
		    }
		break;
		case ST_INPUT_QUOTE:
		switch ( ch )
		    {
		    case '"': state = ST_INPUT; break;
		    default: break;
		    }
		break;
		case ST_INPUT_S:
		switch ( ch )
		    {
		    case 'R': case 'r': state = ST_INPUT_SR; break;
		    case '"': state = ST_INPUT_QUOTE; break;
		    default: state = ST_INPUT; break;
		    }
		break;
		case ST_INPUT_SR:
		switch ( ch )
		    {
		    case 'C': case 'c': state = ST_INPUT_SRC; break;
		    case '"': state = ST_INPUT_QUOTE; break;
		    default: state = ST_INPUT; break;
		    }
		break;
		case ST_INPUT_SRC:
		switch ( ch )
		    {
		    case ' ': case '\t': case '\n': case '\r': break;
		    case '=': state = ST_INPUT_SRC_EQUAL; break;
		    case '"': state = ST_INPUT_QUOTE; break;
		    default: state = ST_INPUT; break;
		    }
		break;
		case ST_INPUT_SRC_EQUAL:
		// Start accumulating a URL.
		urlBuf.setLength( 0 );
		gettingUrl = true;
		switch ( ch )
		    {
		    case ' ': case '\t': case '\n': case '\r': break;
		    case '"': state = ST_INPUTSRC_Q; break;
		    default:
		    // Accumulate the URL.
		    urlBuf.append( ch );
		    state = ST_INPUTSRC_NQ;
		    break;
		    }
		break;
		case ST_INPUTSRC_Q:
		switch ( ch )
		    {
		    case '"':
		    // Got a complete URL.
		    callIMGSRC( urlBuf.toString() );
		    gettingUrl = false;
		    state = ST_INPUT;
		    break;
		    default:
		    // Accumulate the URL.
		    urlBuf.append( ch );
		    break;
		    }
		break;
		case ST_INPUTSRC_NQ:
		switch ( ch )
		    {
		    case '>':
		    case ' ': case '\t': case '\n': case '\r':
		    // Got a complete URL.
		    callIMGSRC( urlBuf.toString() );
		    gettingUrl = false;
		    state = ( ch == '>' ? ST_GROUND : ST_INPUT );
		    break;
		    default:
		    // Accumulate the URL.
		    urlBuf.append( ch );
		    break;
		    }
		break;
		}
	    }
	return interpDelta;
	}

    private void callAHREF( String urlStr )
	{
	Enumeration en = observers.elements();
	while ( en.hasMoreElements() )
	    {
	    Acme.Pair pair = (Acme.Pair) en.nextElement();
	    Acme.HtmlObserver observer = (HtmlObserver) pair.left();
	    Object clientData = pair.right();
	    observer.gotAHREF( urlStr, contextUrl, clientData );
	    }
	}

    private void callIMGSRC( String urlStr )
	{
	Enumeration en = observers.elements();
	while ( en.hasMoreElements() )
	    {
	    Acme.Pair pair = (Acme.Pair) en.nextElement();
	    Acme.HtmlObserver observer = (HtmlObserver) pair.left();
	    Object clientData = pair.right();
	    observer.gotIMGSRC( urlStr, contextUrl, clientData );
	    }
	}

    private void callFRAMESRC( String urlStr )
	{
	Enumeration en = observers.elements();
	while ( en.hasMoreElements() )
	    {
	    Acme.Pair pair = (Acme.Pair) en.nextElement();
	    Acme.HtmlObserver observer = (HtmlObserver) pair.left();
	    Object clientData = pair.right();
	    observer.gotFRAMESRC( urlStr, contextUrl, clientData );
	    }
	}

    private void callBASEHREF( String urlStr )
	{
	Enumeration en = observers.elements();
	while ( en.hasMoreElements() )
	    {
	    Acme.Pair pair = (Acme.Pair) en.nextElement();
	    Acme.HtmlObserver observer = (HtmlObserver) pair.left();
	    Object clientData = pair.right();
	    observer.gotBASEHREF( urlStr, contextUrl, clientData );
	    }
	}

    private void callAREAHREF( String urlStr )
	{
	Enumeration en = observers.elements();
	while ( en.hasMoreElements() )
	    {
	    Acme.Pair pair = (Acme.Pair) en.nextElement();
	    Acme.HtmlObserver observer = (HtmlObserver) pair.left();
	    Object clientData = pair.right();
	    observer.gotAREAHREF( urlStr, contextUrl, clientData );
	    }
	}

    private void callLINKHREF( String urlStr )
	{
	Enumeration en = observers.elements();
	while ( en.hasMoreElements() )
	    {
	    Acme.Pair pair = (Acme.Pair) en.nextElement();
	    Acme.HtmlObserver observer = (HtmlObserver) pair.left();
	    Object clientData = pair.right();
	    observer.gotLINKHREF( urlStr, contextUrl, clientData );
	    }
	}

    private void callBODYBACKGROUND( String urlStr )
	{
	Enumeration en = observers.elements();
	while ( en.hasMoreElements() )
	    {
	    Acme.Pair pair = (Acme.Pair) en.nextElement();
	    Acme.HtmlObserver observer = (HtmlObserver) pair.left();
	    Object clientData = pair.right();
	    observer.gotBODYBACKGROUND( urlStr, contextUrl, clientData );
	    }
	}

    /// Can be used to change the scan buffer in the middle of a scan.
    // Black Magic!  Dangerous!  Be careful!  For use only by
    // HtmlEditScanner - any other use voids warranty.
    protected void substitute( int oldLen, String newStr )
	{
	int newLen = newStr.length();
	int d = newLen - oldLen;
	System.arraycopy(
	    interpBuf, interpIndex, interpBuf, interpIndex + d,
	    interpEnd - interpIndex );
	// newStr.getBytes( 0, newLen, interpBuf, interpIndex - oldLen );
	byte[] newBytes = newStr.getBytes();
	System.arraycopy(
	    newBytes, 0, interpBuf, interpIndex - oldLen, newLen );
	interpIndex += d;
	interpEnd += d;
	interpDelta += d;
	}

    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -