I agree with your opinion. The listener job is to listen to the specified directory and look for files that are to be processed. Making the listener do the processing will hurt the time taken to process the other files that are waiting to be processed. Also, this forms a strong coupling between the listener and the processing logic thereby making the listener as strong or weak as the processing logic in terms of performance and memory consumption.
So, queuing the data from the files that are read would be the right way of doing it.
Also, you might have to take another decision as to which how the data needs to be queued. As in should each record be queued as a separate instance to an agent? Or to queue the entire set of data to a single agent.
Here, if you queue the entire set of data to one agent, it is easy to make a decision from the outcome, i.e., providing a notification on the success and failure of individual instances of a single file. If the records are queued separately, you might have to collect the notification manually, or to have a notification in case of failure for every WO creation.
You can queue the xml content of the entire pagelist structure that you obtain after parsing the file to one agent to make this simpler with the trade off that it will have all the load on a single node and single agent instance.