Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ReadAttributes()

void System.Xml.XmlUTF8TextReader.ReadAttributes ( )
inlineprivate

Definition at line 322 of file XmlUTF8TextReader.cs.

323 {
324 int num = 0;
325 if (_buffered)
326 {
327 num = base.BufferReader.Offset;
328 }
329 while (true)
330 {
332 if (base.BufferReader.GetByte() != 61)
333 {
335 if (base.BufferReader.GetByte() != 61)
336 {
337 XmlExceptionHelper.ThrowTokenExpected(this, "=", (char)base.BufferReader.GetByte());
338 }
339 }
340 base.BufferReader.SkipByte();
341 byte @byte = base.BufferReader.GetByte();
342 if (@byte != 34 && @byte != 39)
343 {
345 @byte = base.BufferReader.GetByte();
346 if (@byte != 34 && @byte != 39)
347 {
348 XmlExceptionHelper.ThrowTokenExpected(this, "\"", (char)base.BufferReader.GetByte());
349 }
350 }
351 base.BufferReader.SkipByte();
352 bool flag = false;
353 int offset = base.BufferReader.Offset;
354 byte byte2;
355 while (true)
356 {
357 int offset2;
358 int offsetMax;
359 byte[] buffer = base.BufferReader.GetBuffer(out offset2, out offsetMax);
361 base.BufferReader.Advance(count);
362 byte2 = base.BufferReader.GetByte();
363 if (byte2 == @byte)
364 {
365 break;
366 }
367 switch (byte2)
368 {
369 case 38:
370 ReadCharRef();
371 flag = true;
372 break;
373 case 34:
374 case 39:
375 base.BufferReader.SkipByte();
376 break;
377 case 9:
378 case 10:
379 case 13:
380 base.BufferReader.SkipByte();
381 flag = true;
382 break;
383 case 239:
384 ReadNonFFFE();
385 break;
386 default:
387 {
388 char c = (char)@byte;
389 XmlExceptionHelper.ThrowTokenExpected(this, c.ToString(), (char)byte2);
390 break;
391 }
392 }
393 }
395 XmlAttributeNode xmlAttributeNode;
396 if (_prefix.IsXmlns)
397 {
398 Namespace @namespace = AddNamespace();
399 _localName.ToPrefixHandle(@namespace.Prefix);
400 @namespace.Uri.SetValue(offset, length, flag);
402 }
403 else if (_prefix.IsEmpty && _localName.IsXmlns)
404 {
406 namespace2.Prefix.SetValue(PrefixHandleType.Empty);
407 namespace2.Uri.SetValue(offset, length, flag);
409 }
410 else if (_prefix.IsXml)
411 {
413 xmlAttributeNode.Prefix.SetValue(_prefix);
414 xmlAttributeNode.LocalName.SetValue(_localName);
415 xmlAttributeNode.Value.SetValue(flag ? ValueHandleType.EscapedUTF8 : ValueHandleType.UTF8, offset, length);
417 }
418 else
419 {
421 xmlAttributeNode.Prefix.SetValue(_prefix);
422 xmlAttributeNode.LocalName.SetValue(_localName);
423 xmlAttributeNode.Value.SetValue(flag ? ValueHandleType.EscapedUTF8 : ValueHandleType.UTF8, offset, length);
424 }
425 xmlAttributeNode.QuoteChar = (char)@byte;
426 base.BufferReader.SkipByte();
427 byte2 = base.BufferReader.GetByte();
428 bool flag2 = false;
429 while ((s_charType[byte2] & 4u) != 0)
430 {
431 flag2 = true;
432 base.BufferReader.SkipByte();
433 byte2 = base.BufferReader.GetByte();
434 }
435 if (byte2 == 62 || byte2 == 47 || byte2 == 63)
436 {
437 break;
438 }
439 if (!flag2)
440 {
441 XmlExceptionHelper.ThrowXmlException(this, new XmlException(System.SR.XmlSpaceBetweenAttributes));
442 }
443 }
444 if (_buffered && base.BufferReader.Offset - num > _maxBytesPerRead)
445 {
446 XmlExceptionHelper.ThrowMaxBytesPerReadExceeded(this, _maxBytesPerRead);
447 }
449 }
static string XmlSpaceBetweenAttributes
Definition SR.cs:492
Definition SR.cs:7
XmlAttributeNode AddXmlAttribute()
void FixXmlAttribute(XmlAttributeNode attributeNode)
XmlAttributeNode AddXmlnsAttribute(Namespace ns)
XmlAttributeNode AddAttribute()
readonly StringHandle _localName
readonly PrefixHandle _prefix
int ReadAttributeText(byte[] buffer, int offset, int offsetMax)
static readonly byte[] s_charType
void ReadQualifiedName(PrefixHandle prefix, StringHandle localName)

References System.Xml.XmlUTF8TextReader._buffered, System.Xml.XmlBaseReader._localName, System.Xml.XmlUTF8TextReader._localName, System.Xml.XmlUTF8TextReader._maxBytesPerRead, System.Xml.XmlUTF8TextReader._prefix, System.Xml.XmlBaseReader.AddAttribute(), System.Xml.XmlBaseReader.AddNamespace(), System.Xml.XmlBaseReader.AddXmlAttribute(), System.Xml.XmlBaseReader.AddXmlnsAttribute(), System.buffer, System.count, System.Xml.Dictionary, System.Xml.XmlBaseReader.FixXmlAttribute(), System.Xml.PrefixHandle.IsEmpty, System.Xml.PrefixHandle.IsXml, System.Xml.PrefixHandle.IsXmlns, System.Xml.StringHandle.IsXmlns, System.length, System.offset, System.Xml.XmlBaseReader.Prefix, System.Xml.XmlBaseReader.ProcessAttributes(), System.Xml.XmlUTF8TextReader.ReadAttributeText(), System.Xml.XmlUTF8TextReader.ReadCharRef(), System.Xml.XmlUTF8TextReader.ReadNonFFFE(), System.Xml.XmlUTF8TextReader.ReadQualifiedName(), System.Xml.XmlUTF8TextReader.s_charType, System.Xml.XmlUTF8TextReader.SkipWhitespace(), System.Xml.XmlExceptionHelper.ThrowMaxBytesPerReadExceeded(), System.Xml.XmlExceptionHelper.ThrowTokenExpected(), System.Xml.XmlExceptionHelper.ThrowXmlException(), System.Xml.XmlException, and System.SR.XmlSpaceBetweenAttributes.

Referenced by System.Xml.XmlUTF8TextReader.ReadDeclaration(), and System.Xml.XmlUTF8TextReader.ReadStartElement().