System.Data.DataSet.ReadXmlSerializable C# (CSharp) Method

ReadXmlSerializable() protected method

protected ReadXmlSerializable ( XmlReader reader ) : void
reader XmlReader
return void
        protected virtual void ReadXmlSerializable(XmlReader reader)
        {
            // <DataSet xsi:nil="true"> does not mean DataSet is null,but it does not have any child
            // so  dont do anything, ignore the attributes and just return empty DataSet;
            _useDataSetSchemaOnly = false;
            _udtIsWrapped = false;

            if (reader.HasAttributes)
            {
                const string xsinill = Keywords.XSI + ":" + Keywords.XSI_NIL;
                if (reader.MoveToAttribute(xsinill))
                {
                    string nilAttrib = reader.GetAttribute(xsinill);
                    if (string.Equals(nilAttrib, "true", StringComparison.Ordinal))
                    {
                        // case sensitive true comparison
                        MoveToElement(reader, 1);
                        return;
                    }
                }

                const string UseDataSetSchemaOnlyString = Keywords.MSD + ":" + Keywords.USEDATASETSCHEMAONLY;
                if (reader.MoveToAttribute(UseDataSetSchemaOnlyString))
                {
                    string useDataSetSchemaOnly = reader.GetAttribute(UseDataSetSchemaOnlyString);
                    if (string.Equals(useDataSetSchemaOnly, "true", StringComparison.Ordinal) ||
                        string.Equals(useDataSetSchemaOnly, "1", StringComparison.Ordinal))
                    {
                        _useDataSetSchemaOnly = true;
                    }
                    else if (!string.Equals(useDataSetSchemaOnly, "false", StringComparison.Ordinal) &&
                             !string.Equals(useDataSetSchemaOnly, "0", StringComparison.Ordinal))
                    {
                        throw ExceptionBuilder.InvalidAttributeValue(Keywords.USEDATASETSCHEMAONLY, useDataSetSchemaOnly);
                    }
                }

                const string udtIsWrappedString = Keywords.MSD + ":" + Keywords.UDTCOLUMNVALUEWRAPPED;
                if (reader.MoveToAttribute(udtIsWrappedString))
                {
                    string _udtIsWrappedString = reader.GetAttribute(udtIsWrappedString);
                    if (string.Equals(_udtIsWrappedString, "true", StringComparison.Ordinal) ||
                        string.Equals(_udtIsWrappedString, "1", StringComparison.Ordinal))
                    {
                        _udtIsWrapped = true;
                    }
                    else if (!string.Equals(_udtIsWrappedString, "false", StringComparison.Ordinal) &&
                             !string.Equals(_udtIsWrappedString, "0", StringComparison.Ordinal))
                    {
                        throw ExceptionBuilder.InvalidAttributeValue(Keywords.UDTCOLUMNVALUEWRAPPED, _udtIsWrappedString);
                    }
                }
            }
            ReadXml(reader, XmlReadMode.DiffGram, true);
        }