亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? htmlcharacterentitydecoder.java

?? spring framework 2.5.4源代碼
?? JAVA
字號:
/*
 * Copyright 2002-2005 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.web.util;

/**
 * Helper for decoding HTML Strings by replacing character
 * entity references with the referred character.
 *
 * @author Juergen Hoeller
 * @author Martin Kersten
 * @since 1.2.1
 */
class HtmlCharacterEntityDecoder {

	private static final int MAX_REFERENCE_SIZE = 10;


	private final HtmlCharacterEntityReferences characterEntityReferences;

	private final String originalMessage;

	private final StringBuffer decodedMessage;

	private int currentPosition = 0;

	private int nextPotentialReferencePosition = -1;

	private int nextSemicolonPosition = -2;


	public HtmlCharacterEntityDecoder(HtmlCharacterEntityReferences characterEntityReferences, String original) {
		this.characterEntityReferences = characterEntityReferences;
		this.originalMessage = original;
		this.decodedMessage = new StringBuffer(originalMessage.length());
	}

	public String decode() {
		while (currentPosition < originalMessage.length()) {
			findNextPotentialReference(currentPosition);
			copyCharactersTillPotentialReference();
			processPossibleReference();
		}
		return decodedMessage.toString();
	}

	private void findNextPotentialReference(int startPosition) {
		nextPotentialReferencePosition = Math.max(startPosition, nextSemicolonPosition - MAX_REFERENCE_SIZE);

		do {
			nextPotentialReferencePosition =
					originalMessage.indexOf('&', nextPotentialReferencePosition);

			if (nextSemicolonPosition != -1 &&
					nextSemicolonPosition < nextPotentialReferencePosition)
				nextSemicolonPosition = originalMessage.indexOf(';', nextPotentialReferencePosition + 1);

			boolean isPotentialReference =
					nextPotentialReferencePosition != -1
					&& nextSemicolonPosition != -1
					&& nextPotentialReferencePosition - nextSemicolonPosition < MAX_REFERENCE_SIZE;

			if (isPotentialReference) {
				break;
			}
			if (nextPotentialReferencePosition == -1) {
				break;
			}
			if (nextSemicolonPosition == -1) {
				nextPotentialReferencePosition = -1;
				break;
			}

			nextPotentialReferencePosition = nextPotentialReferencePosition + 1;
		}
		while (nextPotentialReferencePosition != -1);
	}


	private void copyCharactersTillPotentialReference() {
		if (nextPotentialReferencePosition != currentPosition) {
			int skipUntilIndex = nextPotentialReferencePosition != -1 ?
					nextPotentialReferencePosition : originalMessage.length();
			if (skipUntilIndex - currentPosition > 3) {
				decodedMessage.append(originalMessage.substring(currentPosition, skipUntilIndex));
				currentPosition = skipUntilIndex;
			}
			else {
				while (currentPosition < skipUntilIndex)
					decodedMessage.append(originalMessage.charAt(currentPosition++));
			}
		}
	}

	private void processPossibleReference() {
		if (nextPotentialReferencePosition != -1) {
			boolean isNumberedReference = originalMessage.charAt(currentPosition + 1) == '#';
			boolean wasProcessable = isNumberedReference ? processNumberedReference() : processNamedReference();
			if (wasProcessable) {
				currentPosition = nextSemicolonPosition + 1;
			}
			else {
				char currentChar = originalMessage.charAt(currentPosition);
				decodedMessage.append(currentChar);
				currentPosition++;
			}
		}
	}

	private boolean processNumberedReference() {
		boolean isHexNumberedReference =
				originalMessage.charAt(nextPotentialReferencePosition + 2) == 'x' ||
				originalMessage.charAt(nextPotentialReferencePosition + 2) == 'X';
		try {
			int value = (!isHexNumberedReference) ?
					Integer.parseInt(getReferenceSubstring(2)) :
					Integer.parseInt(getReferenceSubstring(3), 16);
			decodedMessage.append((char) value);
			return true;
		}
		catch (NumberFormatException ex) {
			return false;
		}
	}

	private boolean processNamedReference() {
		String referenceName = getReferenceSubstring(1);
		char mappedCharacter = characterEntityReferences.convertToCharacter(referenceName);
		if (mappedCharacter != HtmlCharacterEntityReferences.CHAR_NULL) {
			decodedMessage.append(mappedCharacter);
			return true;
		}
		return false;
	}

	private String getReferenceSubstring(int referenceOffset) {
		return originalMessage.substring(nextPotentialReferencePosition + referenceOffset, nextSemicolonPosition);
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av一区二区三区| 亚洲影视在线观看| 六月丁香婷婷久久| 91精品国产综合久久精品app| 亚洲午夜久久久久久久久久久 | 欧美电影免费观看完整版| 午夜天堂影视香蕉久久| 91精品免费观看| 久久国产精品99精品国产| 精品国产乱码久久久久久久久| 久久疯狂做爰流白浆xx| 国产视频视频一区| 波多野结衣在线aⅴ中文字幕不卡| 亚洲精品视频在线看| 欧美日韩高清在线播放| 男女性色大片免费观看一区二区| 精品国产欧美一区二区| www.日韩大片| 五月综合激情网| 久久女同互慰一区二区三区| 成人av免费网站| 亚洲高清在线精品| 精品国产一区二区亚洲人成毛片 | 欧美大白屁股肥臀xxxxxx| 国产成人免费xxxxxxxx| 亚洲一区二区三区三| 91精品国产色综合久久不卡电影 | 欧美日本在线视频| 国产成人综合精品三级| 麻豆成人久久精品二区三区红| 精品国产乱码久久久久久免费| www.亚洲免费av| 日韩在线一区二区| 国产精品久久久久四虎| 欧美精品vⅰdeose4hd| 国产伦理精品不卡| 亚洲人成电影网站色mp4| 日韩三级.com| 欧美中文一区二区三区| 国产黄色成人av| 视频一区国产视频| 中文字幕日韩一区| 亚洲精品一区二区三区蜜桃下载 | 成人18视频在线播放| 日本在线不卡一区| 亚洲精品福利视频网站| 国产视频一区不卡| 日韩欧美一区二区久久婷婷| 色乱码一区二区三区88| 国产精品亚洲综合一区在线观看| 午夜一区二区三区在线观看| 成人免费一区二区三区在线观看| 精品久久人人做人人爽| 欧美视频一区二| 99精品国产一区二区三区不卡| 日本一不卡视频| 亚洲成人免费视| 亚洲欧美日韩国产一区二区三区| 久久久久久久综合色一本| 3atv在线一区二区三区| 欧美伊人精品成人久久综合97| 成人免费毛片app| 国产在线精品免费| 国产伦精品一区二区三区免费| 国产露脸91国语对白| 午夜一区二区三区视频| 亚瑟在线精品视频| 亚洲自拍偷拍综合| 亚洲狼人国产精品| 亚洲欧美激情小说另类| 自拍偷拍国产精品| 亚洲色图一区二区| 国产精品第五页| 亚洲特级片在线| 国产精品国产馆在线真实露脸| 欧美国产欧美亚州国产日韩mv天天看完整| 91精品国产综合久久婷婷香蕉| 欧美精品自拍偷拍动漫精品| 欧美亚洲日本一区| 欧美日韩高清一区二区| 欧美巨大另类极品videosbest | 亚洲欧美另类小说| 亚洲欧美aⅴ...| 一区二区三区在线观看视频| 亚洲视频免费观看| 亚洲综合无码一区二区| 日韩成人dvd| 日韩不卡在线观看日韩不卡视频| 国产欧美精品区一区二区三区| 久久影院午夜论| 久久精品亚洲一区二区三区浴池| 精品蜜桃在线看| 韩国精品主播一区二区在线观看| 专区另类欧美日韩| 国产人妖乱国产精品人妖| 欧美一区二区三区啪啪| 欧美亚一区二区| 99久久综合国产精品| 国产精品综合一区二区三区| 美女网站视频久久| 视频一区二区三区中文字幕| 一区二区三区四区视频精品免费| 日本一区二区视频在线| 久久综合一区二区| 欧美成人三级在线| 91麻豆精品国产自产在线观看一区| 色狠狠桃花综合| 99亚偷拍自图区亚洲| 成人app下载| 成人动漫av在线| www.欧美精品一二区| 成人免费看片app下载| 国产不卡视频一区二区三区| 国产成人鲁色资源国产91色综 | 日韩欧美电影在线| 69av一区二区三区| 337p亚洲精品色噜噜噜| 制服.丝袜.亚洲.中文.综合| 欧美另类高清zo欧美| 欧美精品一卡两卡| 欧美一区二区三区日韩| 精品久久国产字幕高潮| 精品精品欲导航| 国产精品私房写真福利视频| 亚洲欧洲日韩综合一区二区| 亚洲欧美另类综合偷拍| 亚洲v中文字幕| 久久综合综合久久综合| 国内精品伊人久久久久影院对白| 国产一区二区三区四区五区美女 | 91小视频在线免费看| 日本久久一区二区| 欧美精品久久久久久久久老牛影院| 91麻豆精品国产| 久久久美女毛片 | 亚洲精品在线免费播放| 国产无一区二区| 亚洲福利一区二区三区| 久久精品免费观看| 97se亚洲国产综合自在线观| 日本二三区不卡| 日韩视频免费观看高清完整版在线观看| 精品美女一区二区| 国产精品美女久久久久aⅴ国产馆| 亚洲人被黑人高潮完整版| 免费不卡在线视频| 99久久精品国产毛片| 91精品婷婷国产综合久久性色| 久久久亚洲精品石原莉奈| 亚洲同性gay激情无套| 久久福利资源站| 在线免费不卡视频| 26uuu国产在线精品一区二区| 亚洲啪啪综合av一区二区三区| 亚洲网友自拍偷拍| 高清成人在线观看| 欧美一区二区三区四区高清| 国产精品日韩成人| 日本不卡在线视频| 一本大道综合伊人精品热热| 欧美成人精品二区三区99精品| 亚洲欧美经典视频| 国产精品一级二级三级| 欧美精品一二三四| 樱花影视一区二区| 国产一级精品在线| 欧美电影一区二区三区| 亚洲三级在线看| 国产传媒久久文化传媒| 日韩欧美亚洲国产精品字幕久久久 | 亚洲日本护士毛茸茸| 久久国产免费看| 欧美色男人天堂| 国产精品灌醉下药二区| 国产精品系列在线播放| 欧美巨大另类极品videosbest| 亚洲欧美日韩久久| 国产suv一区二区三区88区| 欧美不卡在线视频| 免费三级欧美电影| 欧美日本精品一区二区三区| 亚洲欧洲综合另类| 成人高清伦理免费影院在线观看| 精品粉嫩超白一线天av| 青青草国产精品97视觉盛宴| 在线观看国产一区二区| 亚洲人成亚洲人成在线观看图片| 国产ts人妖一区二区| 国产色产综合色产在线视频| 韩国一区二区在线观看| 欧美成人伊人久久综合网| 蜜桃av一区二区| 日韩三级在线观看| 久久激情五月激情| 精品久久久久99| 国产精品66部| 久久精品夜夜夜夜久久| 国产99久久久国产精品免费看| 久久久91精品国产一区二区三区| 粉嫩一区二区三区在线看|