System.Xml.XmlStreamReader.Read C# (CSharp) Méthode

Read() public méthode

public Read ( [ dest_buffer, int index, int count ) : int
dest_buffer [
index int
count int
Résultat int
		public override int Read ([In, Out] char[] dest_buffer, int index, int count)
		{
			try {
				return base.Read (dest_buffer, index, count);
			}
#if NET_1_1
			catch (System.ArgumentException) {
				throw invalidDataException;
			}
#else
			catch (System.Text.DecoderFallbackException) {
				throw invalidDataException;
			}
#endif
		}

Usage Example

Exemple #1
0
        internal XmlScanner(XmlStreamReader reader, XmlNameTable ntable, Encoding enc) : this(ntable) {
            _nLineNum = 1;
            _StreamReader = reader;
            _TextReader = null;
            _nSize = (int) ((reader.CanCalcLength && reader.Length < BUFSIZE) ? reader.Length:BUFSIZE);
            _ByteBuffer = new byte[_nSize+1];
            _ByteLen = _StreamReader.Read(_ByteBuffer, 0, _nSize);
            _ByteStart = 0;

            _nCodePage = 0;
            if (null != enc) {
                _Encoding = enc;
            }
            else {
                _Encoding = null;
                switch(AutoDetectEncoding(_ByteBuffer))
                {
                case UniCodeBE://2:
                    _Encoding = Encoding.BigEndianUnicode;
                    break;
                case UniCode: //3:
                    _Encoding = Encoding.Unicode;
                    break;
                case UCS4BE: //4:
                case UCS4BEB: // 5:
                    _Encoding = Ucs4Encoding.UCS4_Bigendian;
                    break;

                case UCS4: //6:
                case UCS4B: //7:
                    _Encoding = Ucs4Encoding.UCS4_Littleendian;
                    break;

                case UCS434://8:
                case UCS434B: //9:
                    _Encoding = Ucs4Encoding.UCS4_3412;
                    break;
                case UCS421: //10:
                case UCS421B://11:
                    _Encoding = Ucs4Encoding.UCS4_2143;
                    break;

                case EBCDIC: //12: ebcdic
                    throw new XmlException(Res.Xml_UnknownEncoding, "ebcdic", LineNum, LinePos);
                    //break;
                case UTF8: //13:
                    _EncodingSetByDefault = true;
                    _Encoding = new UTF8Encoding(true);
                    break;
                default:
                    _Encoding = new UTF8Encoding(true, true);

                    break;
                }

            }

            _Decoder = _Encoding.GetDecoder();
            _PermitEncodingChange = true;
            if(_Encoding != null)
                _nCodePage = _Encoding.CodePage;
            _achText = new char[_nSize+1];

            int preambleLength = 0;
            try {
                byte[] preamble = _Encoding.GetPreamble();
                preambleLength = preamble.Length;
                bool hasByteOrderMark = true;
                for (int i = 0; i < preambleLength && hasByteOrderMark; i++) {
                    hasByteOrderMark &= (_ByteBuffer[i] == preamble[i]);
                }
                if (hasByteOrderMark) {
                    _ByteStart = preambleLength;
                }
            }
            catch (Exception) {
            }

            _nUsed += GetChars(_ByteBuffer, ref _ByteStart , _ByteLen - _ByteStart, _achText, 0, true);

            _achText[_nUsed] = (char)0;
        }