XSerializer.XSerializerXmlReader.Read C# (CSharp) Method

Read() public method

public Read ( ) : bool
return bool
        public override bool Read()
        {
            if (_surrogateReader != null)
            {
                if (_surrogateReader.Read() && !IsAtDummyNodeEndElement())
                {
                    // If this isn't the closing dummy node, return true.
                    return true;
                }

                // When we're done with surrogateReader, get rid of it and go back to primaryReader.
                _surrogateReader.Close();
                _surrogateReader = null;
                _currentReader = _primaryReader;
            }

            var read = _primaryReader.Read();

            if (!read)
            {
                return false;
            }

            // If we're decrypting, and our node contains text that starts with '<', then
            // assume that the text contains one or more encrypted child elements. In this
            // case, load the decrypted contents into a surrogate xml reader and use that
            // reader until it reads to its end. Then switch back to the primary reader.
            if (IsDecryptionEnabled && NodeType == XmlNodeType.Text)
            {
                var value = Value;

                if (_isStartElementRegex.IsMatch(value))
                {
                    // The xml fragment contained in the Value property may contain multiple
                    // top-level elements. To ensure valid xml, wrap the fragment in a dummy node.
                    var xml = _dummyNodeStartElement + value + _dummyNodeEndElement;

                    _surrogateReader = new XSerializerXmlReader(xml, _encryptionMechanism, _encryptKey,
                        _serializationState);
                    _currentReader = _surrogateReader;

                    _surrogateReader.Read(); // Advance to the opening dummy node
                    return _surrogateReader.Read(); // Advance to the first decrypted node.
                }
            }

            return true;
        }

Usage Example

        public override bool Read()
        {
            if (_surrogateReader != null)
            {
                if (_surrogateReader.Read() && !IsAtDummyNodeEndElement())
                {
                    // If this isn't the closing dummy node, return true.
                    return(true);
                }

                // When we're done with surrogateReader, get rid of it and go back to primaryReader.
                _surrogateReader.Close();
                _surrogateReader = null;
                _currentReader   = _primaryReader;
            }

            var read = _primaryReader.Read();

            if (!read)
            {
                return(false);
            }

            // If we're decrypting, and our node contains text that starts with '<', then
            // assume that the text contains one or more encrypted child elements. In this
            // case, load the decrypted contents into a surrogate xml reader and use that
            // reader until it reads to its end. Then switch back to the primary reader.
            if (IsDecryptionEnabled && NodeType == XmlNodeType.Text)
            {
                var value = Value;

                if (_isStartElementRegex.IsMatch(value))
                {
                    // The xml fragment contained in the Value property may contain multiple
                    // top-level elements. To ensure valid xml, wrap the fragment in a dummy node.
                    var xml = _dummyNodeStartElement + value + _dummyNodeEndElement;

                    _surrogateReader = new XSerializerXmlReader(xml, _encryptionMechanism, _encryptKey,
                                                                _serializationState);
                    _currentReader = _surrogateReader;

                    _surrogateReader.Read();         // Advance to the opening dummy node
                    return(_surrogateReader.Read()); // Advance to the first decrypted node.
                }
            }

            return(true);
        }
All Usage Examples Of XSerializer.XSerializerXmlReader::Read