Unlike when a PC connects to a serial port, the Arduino end of the serial port IS the TX/RX pins. Any number of things can read the state of the RX pin and set the state of the TX pin.
When the Arduino reads data from the RX pin, it puts in an a buffer, for the Serial.available() and Serial.read() functions to operate on.
When the Arduino sends data to the serial port, using Serial.write() or Serial.print(ln)(), the TX pin is toggled HIGH and LOW at specific times. This toggling is read by the device on the other end of the serial port.
The XBee also monitors the TX pin. When it sees the TX pin toggle, it broadcasts that data over the air.
When the XBee receives data over the air, it toggles the RX pin in the same manner that the PC does.
So, the Arduino can get data, on the RX pin, from the PC and the XBee at the same time, and can send data to the PC and XBee at the same time.
The thing that you can't do is send data to the XBee OR the PC. You send data to the XBee AND the PC.
Just like talking in a room full of people, you have to identify who the message is for, and ensure that all listeners respond only to messages send specifically to them.
"PC: Here is the data you requested"
"XB: Broadcast this"
"PX: Hey, everybody, listen up"
The PC should ignore messages sent to the XB only. The XB doesn't process messages it receives, it just broadcasts them, so the receiver needs to know whether to do something with the message, or not.
You could, as in my third line, send messages that both are to process.