Well, here's the issue... you dont really have a valid XML to start with.
For the XML to valid, either the ampersands (and other chars) are *already* escaped, OR the entire string needs to be escaped (which is where DBMS_XMLGEN.CONVERT comes into play).
So I think you'll need to roll your own solution here, for example
SQL> select replace(xmlClob,'&','&') from xmlTestData;
REPLACE(XMLCLOB,'&','&')
--------------------------------------------------------------------------------
<TEST><FIRST_NAME>Vishnu</FIRST_NAME><LAST_NAME>Manivannan<LAST_NAME><COMPANY>L
& T</COMPANY></TEST>
but you'll need to be very careful... because there might be other VALID xml content, eg
SQL> select XMLCLOB from xmlTestData;
XMLCLOB
-------------------------------------------------------------------------------------------------------
<TEST><FIRST_NAME>Vishnu</FIRST_NAME><LAST_NAME>Manivannan<LAST_NAME><COMPANY>L & T</COMPANY></TEST>
<TEST><FIRST_NAME>Connor</FIRST_NAME><LAST_NAME>McDonald<LAST_NAME><COMPANY>L < T</COMPANY></TEST>
I need to make sure that I *dont* escape the correct < so things get more complicated, eg notice the check for a space.
SQL> select replace(xmlClob,'& ','& ') from xmlTestData;
REPLACE(XMLCLOB,'&','&')
-----------------------------------------------------------------------------------------------------------
<TEST><FIRST_NAME>Vishnu</FIRST_NAME><LAST_NAME>Manivannan<LAST_NAME><COMPANY>L & T</COMPANY></TEST>
<TEST><FIRST_NAME>Connor</FIRST_NAME><LAST_NAME>McDonald<LAST_NAME><COMPANY>L < T</COMPANY></TEST>