private HtmlReaderStringValue ReadStringValue() { bool quote = false; //_propertyQuote = ""; HtmlReaderStringValue value = new HtmlReaderStringValue(); //value.Quote = ""; char quoteChar = (char)PeekChar(); if (quoteChar == '"' || quoteChar == '\'') { quote = true; //_propertyQuote = quoteChar.ToString(); value.Quote = quoteChar; GetChar(); } _stringBuilder.Remove(0, _stringBuilder.Length); while (true) { GetChar(); if (_charInt == -1 || (quote && (_char == quoteChar || ((_char == '"' || _char == '\'') && PeekChar() == '>'))) || (!quote && (_char == ' ' || _char == '\t' || _char == '\r' || _char == '\n')) || _char == '>' || (_char == '/' && PeekChar() == '>') ) { break; } _stringBuilder.Append(_char); } //_propertyValue = _stringBuilder.ToString(); //_propertyValue = HtmlCharCodes.TranslateCode(_propertyValue); value.Value = HtmlCharCodes.TranslateCode(_stringBuilder.ToString()); return(value); }
public static string TranslateCode(string value) { if (value == null) { return(null); } // > &aaa; int i = 0; while (true) { Match match = _translate1.Match(value, i); if (!match.Success) { break; } string name = match.Groups[1].Value; HtmlCharCode htmlChar = HtmlCharCodes.GetHtmlChar(name); if (htmlChar != null) { char c = htmlChar.Char; value = value.Substring(0, match.Index) + c.ToString() + value.Substring(match.Index + match.Length, value.Length - match.Index - match.Length); } i = match.Index + 1; } // > &#nnn; i = 0; while (true) { Match match = _translate2.Match(value, i); if (!match.Success) { break; } string codeString = match.Groups[1].Value; int code = int.Parse(codeString); char c = (char)code; value = value.Substring(0, match.Index) + c.ToString() + value.Substring(match.Index + match.Length, value.Length - match.Index - match.Length); i = match.Index + 1; } // · &#xnn; i = 0; while (true) { Match match = _translate3.Match(value, i); if (!match.Success) { break; } string codeString = match.Groups[1].Value; int code = int.Parse(codeString, System.Globalization.NumberStyles.AllowHexSpecifier); char c = (char)code; value = value.Substring(0, match.Index) + c.ToString() + value.Substring(match.Index + match.Length, value.Length - match.Index - match.Length); i = match.Index + 1; } return(value); }
//private void ReadText() private HtmlReaderText ReadText() { int line = _line; int column = _column; bool isTextSeparator = true; bool comment = false; _stringBuilder.Remove(0, _stringBuilder.Length); while (true) { int charInt = PeekChar(); if (!comment && (char)charInt == '<' && (char.IsLetter((char)PeekChar(1)) || (PeekChar(1) == '/' && char.IsLetter((char)PeekChar(2))))) { break; } if (!comment && (char)charInt == '<' && PeekChar(1) == '!' && PeekChar(2) == '-' && PeekChar(3) == '-') { if (!_readCommentInText) { break; } comment = true; GetChar(); _stringBuilder.Append(_char); GetChar(); _stringBuilder.Append(_char); GetChar(); _stringBuilder.Append(_char); GetChar(); _stringBuilder.Append(_char); charInt = PeekChar(); isTextSeparator = false; } if (charInt == -1) { break; } GetChar(); // modif le 24/07/2016 pour éliminer les 0x00 if (_char != '\x00') { _stringBuilder.Append(_char); } if (_char != ' ' && _char != '\t' && _char != '\r' && _char != '\n') { isTextSeparator = false; } int l = _stringBuilder.Length; if (comment && l >= 3 && _stringBuilder[l - 3] == '-' && _stringBuilder[l - 2] == '-' && _stringBuilder[l - 1] == '>') { comment = false; } } //_text = _stringBuilder.ToString(); //_text = HtmlCharCodes.TranslateCode(_text); //_isTextSeparator = isTextSeparator; return(new HtmlReaderText { Line = line, Column = column, Text = HtmlCharCodes.TranslateCode(_stringBuilder.ToString()), IsTextSeparator = isTextSeparator }); }
private void ReadText() { int l; bool isTextSeparator = true; bool comment = false; _stringBuilder.Remove(0, _stringBuilder.Length); while (true) { int charInt = PeekChar(); if (!comment && (char)charInt == '<' && (char.IsLetter((char)PeekChar(1)) || (PeekChar(1) == '/' && char.IsLetter((char)PeekChar(2))))) { break; } if (!comment && (char)charInt == '<' && PeekChar(1) == '!' && PeekChar(2) == '-' && PeekChar(3) == '-') { if (!_readCommentInText) { break; } comment = true; GetChar(); _stringBuilder.Append(_char); GetChar(); _stringBuilder.Append(_char); GetChar(); _stringBuilder.Append(_char); GetChar(); _stringBuilder.Append(_char); charInt = PeekChar(); isTextSeparator = false; } if (charInt == -1) { break; } GetChar(); _stringBuilder.Append(_char); if (_char != ' ' && _char != '\t' && _char != '\r' && _char != '\n') { isTextSeparator = false; } l = _stringBuilder.Length; if (comment && l >= 3 && _stringBuilder[l - 3] == '-' && _stringBuilder[l - 2] == '-' && _stringBuilder[l - 1] == '>') { comment = false; } } _text = _stringBuilder.ToString(); _text = HtmlCharCodes.TranslateCode(_text); _isTextSeparator = isTextSeparator; }
private HtmlNodeText ReadText() { bool isTextSeparator = true; _stringBuilder.Remove(0, _stringBuilder.Length); //_stringBuilder.Append((char)_charStreamReader.ReadChar()); int line = 0; int column = 0; while (true) { if (IsEndText()) { break; } char car = (char)_charStreamReader.ReadChar(); if (line == 0) { line = _charStreamReader.Line; column = _charStreamReader.Column; } if (car != ' ' && car != '\t' && car != '\r' && car != '\n') { isTextSeparator = false; } // modif le 24/07/2016 pour éliminer les 0x00 if (car != '\x00') { _stringBuilder.Append(car); } } // string text = _stringBuilder.ToString(); text = HtmlCharCodes.TranslateCode(text); if (_textReplaceControl) { text = text.zReplaceControl(); } return(new HtmlNodeText { Index = _htmlNodeIndex++, Line = _disableLineColumn ? 0 : line, Column = _disableLineColumn ? 0 : column, Text = text, IsTextSeparator = isTextSeparator }); }
private HtmlNodeScript ReadScript() { HtmlNodeScript script = new HtmlNodeScript { Index = _htmlNodeIndex++, Line = _disableLineColumn ? 0 : _charStreamReader.Line, Column = _disableLineColumn ? 0 : _charStreamReader.Column }; _stringBuilder.Remove(0, _stringBuilder.Length); while (true) { int code = _charStreamReader.PeekChar(); if (code == -1) { break; } char car = (char)code; if (car == '<' && _charStreamReader.PeekChar(1) == '/' && char.ToLower((char)_charStreamReader.PeekChar(2)) == 's' && char.ToLower((char)_charStreamReader.PeekChar(3)) == 'c' && char.ToLower((char)_charStreamReader.PeekChar(4)) == 'r' && char.ToLower((char)_charStreamReader.PeekChar(5)) == 'i' && char.ToLower((char)_charStreamReader.PeekChar(6)) == 'p' && char.ToLower((char)_charStreamReader.PeekChar(7)) == 't' && char.ToLower((char)_charStreamReader.PeekChar(8)) == '>') { break; } _stringBuilder.Append(car); _charStreamReader.ReadChar(); } //_text = _stringBuilder.ToString(); //_text = HtmlCharCodes.TranslateCode(_text); //script.Script = HtmlCharCodes.TranslateCode(_stringBuilder.ToString()).zReplaceControl(); string text = _stringBuilder.ToString(); text = HtmlCharCodes.TranslateCode(text); if (_textReplaceControl) { text = text.zReplaceControl(); } script.Script = text; return(script); }
private void ReadScript() { _stringBuilder.Remove(0, _stringBuilder.Length); while (true) { int iChar = PeekChar(); if (iChar == -1) { break; } if ((char)iChar == '<' && PeekChar(1) == '/' && char.ToLower((char)PeekChar(2)) == 's' && char.ToLower((char)PeekChar(3)) == 'c' && char.ToLower((char)PeekChar(4)) == 'r' && char.ToLower((char)PeekChar(5)) == 'i' && char.ToLower((char)PeekChar(6)) == 'p' && char.ToLower((char)PeekChar(7)) == 't' && char.ToLower((char)PeekChar(8)) == '>') { break; } GetChar(); _stringBuilder.Append(_char); } _text = _stringBuilder.ToString(); _text = HtmlCharCodes.TranslateCode(_text); }
//private void ReadScript() private HtmlReaderScript ReadScript() { int line = _line; int column = _column; _stringBuilder.Remove(0, _stringBuilder.Length); while (true) { int intChar = PeekChar(); if (intChar == -1) { break; } if ((char)intChar == '<' && PeekChar(1) == '/' && char.ToLower((char)PeekChar(2)) == 's' && char.ToLower((char)PeekChar(3)) == 'c' && char.ToLower((char)PeekChar(4)) == 'r' && char.ToLower((char)PeekChar(5)) == 'i' && char.ToLower((char)PeekChar(6)) == 'p' && char.ToLower((char)PeekChar(7)) == 't' && char.ToLower((char)PeekChar(8)) == '>') { break; } GetChar(); _stringBuilder.Append(_char); } //_text = _stringBuilder.ToString(); //_text = HtmlCharCodes.TranslateCode(_text); if (_stringBuilder.Length > 0) { return new HtmlReaderScript { Line = line, Column = column, Script = HtmlCharCodes.TranslateCode(_stringBuilder.ToString()) } } ; else { return(null); } }
private void ReadStringValue2() { bool quote = false; _propertyQuote = ""; char quoteChar = (char)PeekChar(); if (quoteChar == '"' || quoteChar == '\'') { quote = true; _propertyQuote = quoteChar.ToString(); GetChar(); } _stringBuilder.Remove(0, _stringBuilder.Length); bool quote2 = quote; int charInt; int i = 0, endQuotePos = -1; while ((charInt = PeekChar(i)) != -1) { char c = (char)charInt; if (quote2) { if (c == quoteChar) { endQuotePos = i; quote2 = false; } } else { if (c == '=') { for (; i >= 0; i--) { c = (char)PeekChar(i); if (c != ' ' && c != '\t' && c != '\r' && c != '\n') { break; } } for (; i >= 0 && (endQuotePos == -1 || i > endQuotePos); i--) { char cChar = (char)PeekChar(i); if (cChar == ' ' || cChar == '\t' || cChar == '\r' || cChar == '\n') { break; } } break; } else if (c == '>') { if (i > 0 && (char)PeekChar(i - 1) == '/') { i--; } i--; break; } else if (c == '<') { i--; break; } } i++; } for (; i >= 0; i--) { char c = (char)PeekChar(i); if (c != ' ' && c != '\t' && c != '\r' && c != '\n') { break; } } if (quote && i >= 0 && (char)PeekChar(i) == quoteChar) { i--; } for (; i >= 0; i--) { GetChar(); _stringBuilder.Append(_char); } _propertyValue = _stringBuilder.ToString(); _propertyValue = HtmlCharCodes.TranslateCode(_propertyValue); }
private HtmlReaderStringValue ReadStringValue() { HtmlReaderStringValue value = new HtmlReaderStringValue(); bool quote = false; char quoteChar = (char)_charStreamReader.PeekChar(); if (quoteChar == '"' || quoteChar == '\'') { quote = true; value.Quote = quoteChar; _charStreamReader.ReadChar(); } char car = '\0'; Func <bool> isString_v1 = () => { if (quote) { if (car == quoteChar) { _charStreamReader.ReadChar(); return(false); } if ((car == '"' || car == '\'') && _charStreamReader.PeekChar(1) == '>') { _charStreamReader.ReadChar(); return(false); } } else { if (car == ' ' || car == '\t' || car == '\r' || car == '\n') { return(false); } if (car == '>' || (car == '/' && _charStreamReader.PeekChar(1) == '>')) { return(false); } } // bad test see _useReadAttributeValue_v2 if (car == '>' || (car == '/' && _charStreamReader.PeekChar(1) == '>')) { return(false); } return(true); }; Func <bool> isString_v2 = () => { if (quote) { if (car == quoteChar) { _charStreamReader.ReadChar(); return(false); } if ((car == '"' || car == '\'') && _charStreamReader.PeekChar(1) == '>') { _charStreamReader.ReadChar(); return(false); } } else { if (car == ' ' || car == '\t' || car == '\r' || car == '\n') { return(false); } if (car == '>' || (car == '/' && _charStreamReader.PeekChar(1) == '>')) { return(false); } } return(true); }; Func <bool> isString; if (!_useReadAttributeValue_v2) { isString = isString_v1; } else { isString = isString_v2; } _stringBuilder.Remove(0, _stringBuilder.Length); while (true) { int code = _charStreamReader.PeekChar(); if (code == -1) { break; } car = (char)code; //if ((quote && (car == quoteChar || ((car == '"' || car == '\'') && _charStreamReader.PeekChar(1) == '>'))) // || (!quote && (car == ' ' || car == '\t' || car == '\r' || car == '\n')) // || car == '>' || (car == '/' && _charStreamReader.PeekChar(1) == '>')) // break; //if (quote) //{ // if (car == quoteChar) // { // _charStreamReader.ReadChar(); // break; // } // if ((car == '"' || car == '\'') && _charStreamReader.PeekChar(1) == '>') // { // _charStreamReader.ReadChar(); // break; // } //} //else //{ // if (car == ' ' || car == '\t' || car == '\r' || car == '\n') // break; // if (car == '>' || (car == '/' && _charStreamReader.PeekChar(1) == '>')) // break; //} if (!isString()) { break; } _stringBuilder.Append(car); _charStreamReader.ReadChar(); } value.Value = HtmlCharCodes.TranslateCode(_stringBuilder.ToString()); return(value); }