public XmlRpcResponse DeserializeResponse(XmlReader rdr, Type returnType)
 {
     try
     {
         IEnumerator <Node> iter = new XmlRpcParser().ParseResponse(rdr).GetEnumerator();
         iter.MoveNext();
         if (iter.Current is FaultNode)
         {
             var xmlRpcException = DeserializeFault(iter);
             throw xmlRpcException;
         }
         if (returnType == typeof(void) || !iter.MoveNext())
         {
             return new XmlRpcResponse {
                        retVal = null
             }
         }
         ;
         var    valueNode = iter.Current as ValueNode;
         object retObj    = MapValueNode(iter, returnType, new MappingStack("response"),
                                         MappingAction.Error);
         var response = new XmlRpcResponse {
             retVal = retObj
         };
         return(response);
     }
     catch (XmlException ex)
     {
         throw new XmlRpcIllFormedXmlException("Response contains invalid XML", ex);
     }
 }
        public Object ParseValueElement(
            XmlReader rdr,
            Type valType,
            MappingStack mappingStack,
            MappingAction mappingAction)
        {
            var iter = new XmlRpcParser().ParseValue(rdr).GetEnumerator();

            iter.MoveNext();

            return(MapValueNode(iter, valType, mappingStack, mappingAction));
        }
        public XmlRpcResponse DeserializeResponse(XmlReader rdr, Type returnType)
        {
            try
              {

            IEnumerator<Node> iter = new XmlRpcParser().ParseResponse(rdr).GetEnumerator();
            iter.MoveNext();
            if (iter.Current is FaultNode)
            {
              var xmlRpcException = DeserializeFault(iter);
              throw xmlRpcException;
            }
            if (returnType == typeof(void) || !iter.MoveNext())
              return new XmlRpcResponse { retVal = null };
            var valueNode = iter.Current as ValueNode;
            object retObj = MapValueNode(iter, returnType, new MappingStack("response"),
              MappingAction.Error);
            var response = new XmlRpcResponse { retVal = retObj };
            return response;
              }
              catch (XmlException ex)
              {
            throw new XmlRpcIllFormedXmlException("Response contains invalid XML", ex);
              }
        }