How to set Interrupt for USART incoming packets

Dear All,
I’m using XBee Series 2 along with Arduino Uno. I would like my Arduino stops current program routine and reads the incoming packet whenever there is a packet received at USART. Is that using Interrupt the best way? Then, how can i set interrupts for USART packet reception. I found some examples and tried as follows but it didn’t work:
#include <avr/interrup.h>
#include <XBee.h>
XBee xbee = XBee();
void setup()
{
Serial.begin(115200);
xbee.begin(Serial);
}
void loop()
{
sei();
//Normal program routine here
}
ISR (USART_RX_vect)
{
ReadIncomingPacket(); //Function to read packet
}

The UART deals in bytes, not packets. You will get an interrupt for each received character. It will be your responsibility to buffer the characters and act on the buffer contents when you detect that you have received a full 'packet'.