public SmsPayload Parse()
        {
            var payload = new SmsPayload();

            while (_reader.Read())
            {
                switch (_reader.NodeType)
                {
                    case XmlNodeType.Element:
                        HandleRequestElementStart(payload);
                        HandleRecipientElementStart();
                        HandleSenderElementStart();
                        HandleIdElementStart();
                        HandleTextElementStart();
                        break;
                    case XmlNodeType.Text:
                        HandleText(payload);
                        break;
                    case XmlNodeType.EndElement:
                        HandleRecipientElementEnd();
                        HandleSenderElementEnd();
                        HandleIdElementEnd();
                        HandleTextElementEnd();
                        break;
                }
            }

            return payload;
        }
 private void HandleRequestElementStart(SmsPayload payload)
 {
     if (_reader.Name == "request")
     {
         payload.Operation = _reader.GetAttribute("type");
     }
 }
        private void HandleText(SmsPayload payload)
        {
            if (_inSenderElement && _isIdElement)
            {
                payload.SenderPhoneNumber = _reader.Value.Trim();
                return;
            }

            if (_isRecipientElement && _isIdElement)
            {
                payload.RecipientPhoneNumber = _reader.Value.Trim();
            }

            if (_isTextElement)
            {
                payload.SenderText = _reader.Value;
            }
        }