1
//------------------------------------------------------------------------------
2 // <copyright file="PrimitiveXmlSerializers.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
5 // <owner current="true" primary="true">Microsoft</owner>
6 //------------------------------------------------------------------------------
8 namespace System
.Xml
.Serialization
{
9 internal class XmlSerializationPrimitiveWriter
: System
.Xml
.Serialization
.XmlSerializationWriter
{
11 internal void Write_string(object o
) {
14 WriteNullTagLiteral(@"string", @"");
18 WriteNullableStringLiteral(@"string", @"", ((System
.String
)o
));
21 internal void Write_int(object o
) {
24 WriteEmptyTag(@"int", @"");
27 WriteElementStringRaw(@"int", @"", System
.Xml
.XmlConvert
.ToString((System
.Int32
)((System
.Int32
)o
)));
30 internal void Write_boolean(object o
) {
33 WriteEmptyTag(@"boolean", @"");
36 WriteElementStringRaw(@"boolean", @"", System
.Xml
.XmlConvert
.ToString((System
.Boolean
)((System
.Boolean
)o
)));
39 internal void Write_short(object o
) {
42 WriteEmptyTag(@"short", @"");
45 WriteElementStringRaw(@"short", @"", System
.Xml
.XmlConvert
.ToString((System
.Int16
)((System
.Int16
)o
)));
48 internal void Write_long(object o
) {
51 WriteEmptyTag(@"long", @"");
54 WriteElementStringRaw(@"long", @"", System
.Xml
.XmlConvert
.ToString((System
.Int64
)((System
.Int64
)o
)));
57 internal void Write_float(object o
) {
60 WriteEmptyTag(@"float", @"");
63 WriteElementStringRaw(@"float", @"", System
.Xml
.XmlConvert
.ToString((System
.Single
)((System
.Single
)o
)));
66 internal void Write_double(object o
) {
69 WriteEmptyTag(@"double", @"");
72 WriteElementStringRaw(@"double", @"", System
.Xml
.XmlConvert
.ToString((System
.Double
)((System
.Double
)o
)));
75 internal void Write_decimal(object o
) {
78 WriteEmptyTag(@"decimal", @"");
81 WriteElementStringRaw(@"decimal", @"", System
.Xml
.XmlConvert
.ToString((System
.Decimal
)((System
.Decimal
)o
)));
84 internal void Write_dateTime(object o
) {
87 WriteEmptyTag(@"dateTime", @"");
90 WriteElementStringRaw(@"dateTime", @"", FromDateTime(((System
.DateTime
)o
)));
93 internal void Write_unsignedByte(object o
) {
96 WriteEmptyTag(@"unsignedByte", @"");
99 WriteElementStringRaw(@"unsignedByte", @"", System
.Xml
.XmlConvert
.ToString((System
.Byte
)((System
.Byte
)o
)));
102 internal void Write_byte(object o
) {
103 WriteStartDocument();
105 WriteEmptyTag(@"byte", @"");
108 WriteElementStringRaw(@"byte", @"", System
.Xml
.XmlConvert
.ToString((System
.SByte
)((System
.SByte
)o
)));
111 internal void Write_unsignedShort(object o
) {
112 WriteStartDocument();
114 WriteEmptyTag(@"unsignedShort", @"");
117 WriteElementStringRaw(@"unsignedShort", @"", System
.Xml
.XmlConvert
.ToString((System
.UInt16
)((System
.UInt16
)o
)));
120 internal void Write_unsignedInt(object o
) {
121 WriteStartDocument();
123 WriteEmptyTag(@"unsignedInt", @"");
126 WriteElementStringRaw(@"unsignedInt", @"", System
.Xml
.XmlConvert
.ToString((System
.UInt32
)((System
.UInt32
)o
)));
129 internal void Write_unsignedLong(object o
) {
130 WriteStartDocument();
132 WriteEmptyTag(@"unsignedLong", @"");
135 WriteElementStringRaw(@"unsignedLong", @"", System
.Xml
.XmlConvert
.ToString((System
.UInt64
)((System
.UInt64
)o
)));
138 internal void Write_base64Binary(object o
) {
139 WriteStartDocument();
141 WriteNullTagLiteral(@"base64Binary", @"");
145 WriteNullableStringLiteralRaw(@"base64Binary", @"", FromByteArrayBase64(((System
.Byte
[])o
)));
148 internal void Write_guid(object o
) {
149 WriteStartDocument();
151 WriteEmptyTag(@"guid", @"");
154 WriteElementStringRaw(@"guid", @"", System
.Xml
.XmlConvert
.ToString((System
.Guid
)((System
.Guid
)o
)));
157 internal void Write_TimeSpan(object o
)
159 WriteStartDocument();
162 WriteEmptyTag(@"TimeSpan", @"");
165 TimeSpan timeSpan
= (TimeSpan
)o
;
166 WriteElementStringRaw(@"TimeSpan", @"", System
.Xml
.XmlConvert
.ToString(timeSpan
));
169 internal void Write_char(object o
) {
170 WriteStartDocument();
172 WriteEmptyTag(@"char", @"");
175 WriteElementString(@"char", @"", FromChar(((System
.Char
)o
)));
178 internal void Write_QName(object o
) {
179 WriteStartDocument();
181 WriteNullTagLiteral(@"QName", @"");
185 WriteNullableQualifiedNameLiteral(@"QName", @"", ((global::System
.Xml
.XmlQualifiedName
)o
));
188 protected override void InitCallbacks() {
192 internal class XmlSerializationPrimitiveReader
: System
.Xml
.Serialization
.XmlSerializationReader
{
194 internal object Read_string() {
196 Reader
.MoveToContent();
197 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
198 if (((object) Reader
.LocalName
== (object)id1_string
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
203 o
= Reader
.ReadElementString();
207 throw CreateUnknownNodeException();
216 internal object Read_int() {
218 Reader
.MoveToContent();
219 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
220 if (((object) Reader
.LocalName
== (object)id3_int
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
222 o
= System
.Xml
.XmlConvert
.ToInt32(Reader
.ReadElementString());
226 throw CreateUnknownNodeException();
235 internal object Read_boolean() {
237 Reader
.MoveToContent();
238 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
239 if (((object) Reader
.LocalName
== (object)id4_boolean
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
241 o
= System
.Xml
.XmlConvert
.ToBoolean(Reader
.ReadElementString());
245 throw CreateUnknownNodeException();
254 internal object Read_short() {
256 Reader
.MoveToContent();
257 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
258 if (((object) Reader
.LocalName
== (object)id5_short
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
260 o
= System
.Xml
.XmlConvert
.ToInt16(Reader
.ReadElementString());
264 throw CreateUnknownNodeException();
273 internal object Read_long() {
275 Reader
.MoveToContent();
276 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
277 if (((object) Reader
.LocalName
== (object)id6_long
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
279 o
= System
.Xml
.XmlConvert
.ToInt64(Reader
.ReadElementString());
283 throw CreateUnknownNodeException();
292 internal object Read_float() {
294 Reader
.MoveToContent();
295 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
296 if (((object) Reader
.LocalName
== (object)id7_float
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
298 o
= System
.Xml
.XmlConvert
.ToSingle(Reader
.ReadElementString());
302 throw CreateUnknownNodeException();
311 internal object Read_double() {
313 Reader
.MoveToContent();
314 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
315 if (((object) Reader
.LocalName
== (object)id8_double
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
317 o
= System
.Xml
.XmlConvert
.ToDouble(Reader
.ReadElementString());
321 throw CreateUnknownNodeException();
330 internal object Read_decimal() {
332 Reader
.MoveToContent();
333 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
334 if (((object) Reader
.LocalName
== (object)id9_decimal
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
336 o
= System
.Xml
.XmlConvert
.ToDecimal(Reader
.ReadElementString());
340 throw CreateUnknownNodeException();
349 internal object Read_dateTime() {
351 Reader
.MoveToContent();
352 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
353 if (((object) Reader
.LocalName
== (object)id10_dateTime
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
355 o
= ToDateTime(Reader
.ReadElementString());
359 throw CreateUnknownNodeException();
368 internal object Read_unsignedByte() {
370 Reader
.MoveToContent();
371 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
372 if (((object) Reader
.LocalName
== (object)id11_unsignedByte
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
374 o
= System
.Xml
.XmlConvert
.ToByte(Reader
.ReadElementString());
378 throw CreateUnknownNodeException();
387 internal object Read_byte() {
389 Reader
.MoveToContent();
390 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
391 if (((object) Reader
.LocalName
== (object)id12_byte
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
393 o
= System
.Xml
.XmlConvert
.ToSByte(Reader
.ReadElementString());
397 throw CreateUnknownNodeException();
406 internal object Read_unsignedShort() {
408 Reader
.MoveToContent();
409 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
410 if (((object) Reader
.LocalName
== (object)id13_unsignedShort
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
412 o
= System
.Xml
.XmlConvert
.ToUInt16(Reader
.ReadElementString());
416 throw CreateUnknownNodeException();
425 internal object Read_unsignedInt() {
427 Reader
.MoveToContent();
428 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
429 if (((object) Reader
.LocalName
== (object)id14_unsignedInt
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
431 o
= System
.Xml
.XmlConvert
.ToUInt32(Reader
.ReadElementString());
435 throw CreateUnknownNodeException();
444 internal object Read_unsignedLong() {
446 Reader
.MoveToContent();
447 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
448 if (((object) Reader
.LocalName
== (object)id15_unsignedLong
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
450 o
= System
.Xml
.XmlConvert
.ToUInt64(Reader
.ReadElementString());
454 throw CreateUnknownNodeException();
463 internal object Read_base64Binary() {
465 Reader
.MoveToContent();
466 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
467 if (((object) Reader
.LocalName
== (object)id16_base64Binary
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
472 o
= ToByteArrayBase64(false);
476 throw CreateUnknownNodeException();
485 internal object Read_guid() {
487 Reader
.MoveToContent();
488 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
489 if (((object) Reader
.LocalName
== (object)id17_guid
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
491 o
= System
.Xml
.XmlConvert
.ToGuid(Reader
.ReadElementString());
495 throw CreateUnknownNodeException();
504 internal object Read_TimeSpan()
507 Reader
.MoveToContent();
508 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
)
510 if (((object)Reader
.LocalName
== (object)id19_TimeSpan
&& (object)Reader
.NamespaceURI
== (object)id2_Item
))
512 if (Reader
.IsEmptyElement
)
515 //For backward compatibiity
516 //When using old serializer, the serialized TimeSpan value is empty string
517 o
= default(TimeSpan
);
521 o
= System
.Xml
.XmlConvert
.ToTimeSpan(Reader
.ReadElementString());
526 throw CreateUnknownNodeException();
536 internal object Read_char() {
538 Reader
.MoveToContent();
539 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
540 if (((object) Reader
.LocalName
== (object)id18_char
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
542 o
= ToChar(Reader
.ReadElementString());
546 throw CreateUnknownNodeException();
555 internal object Read_QName() {
557 Reader
.MoveToContent();
558 if (Reader
.NodeType
== System
.Xml
.XmlNodeType
.Element
) {
559 if (((object) Reader
.LocalName
== (object)id1_QName
&& (object) Reader
.NamespaceURI
== (object)id2_Item
)) {
564 o
= ReadElementQualifiedName();
568 throw CreateUnknownNodeException();
577 protected override void InitCallbacks() {
580 System
.String id4_boolean
;
581 System
.String id14_unsignedInt
;
582 System
.String id15_unsignedLong
;
583 System
.String id7_float
;
584 System
.String id10_dateTime
;
585 System
.String id6_long
;
586 System
.String id9_decimal
;
587 System
.String id8_double
;
588 System
.String id17_guid
;
589 System
.String id19_TimeSpan
;
590 System
.String id2_Item
;
591 System
.String id13_unsignedShort
;
592 System
.String id18_char
;
593 System
.String id3_int
;
594 System
.String id12_byte
;
595 System
.String id16_base64Binary
;
596 System
.String id11_unsignedByte
;
597 System
.String id5_short
;
598 System
.String id1_string
;
599 System
.String id1_QName
;
601 protected override void InitIDs() {
602 id4_boolean
= Reader
.NameTable
.Add(@"boolean");
603 id14_unsignedInt
= Reader
.NameTable
.Add(@"unsignedInt");
604 id15_unsignedLong
= Reader
.NameTable
.Add(@"unsignedLong");
605 id7_float
= Reader
.NameTable
.Add(@"float");
606 id10_dateTime
= Reader
.NameTable
.Add(@"dateTime");
607 id6_long
= Reader
.NameTable
.Add(@"long");
608 id9_decimal
= Reader
.NameTable
.Add(@"decimal");
609 id8_double
= Reader
.NameTable
.Add(@"double");
610 id17_guid
= Reader
.NameTable
.Add(@"guid");
611 if (LocalAppContextSwitches
.EnableTimeSpanSerialization
)
613 id19_TimeSpan
= Reader
.NameTable
.Add(@"TimeSpan");
615 id2_Item
= Reader
.NameTable
.Add(@"");
616 id13_unsignedShort
= Reader
.NameTable
.Add(@"unsignedShort");
617 id18_char
= Reader
.NameTable
.Add(@"char");
618 id3_int
= Reader
.NameTable
.Add(@"int");
619 id12_byte
= Reader
.NameTable
.Add(@"byte");
620 id16_base64Binary
= Reader
.NameTable
.Add(@"base64Binary");
621 id11_unsignedByte
= Reader
.NameTable
.Add(@"unsignedByte");
622 id5_short
= Reader
.NameTable
.Add(@"short");
623 id1_string
= Reader
.NameTable
.Add(@"string");
624 id1_QName
= Reader
.NameTable
.Add(@"QName");