DB2 supports XML in the database. Maybe your RPG can insert into the database (native program on the iSeries). Your C#.NET program can use ODBC to retrieve from the database. If you use the XML possibilities of DB2 then you won't loose the tags and xml structure. Otherwise you can always use the CLOB or BLOB columns of a DB2 table.
Creating the file in QTEMP will not work. That library is unique for every job. In other words, every job has his own QTEMP. You can see the QTEMP of jobs with DSPJOB, but you can not access the QTEMP. And I am quite sure that your C#.NET program does not run in the same iSeries job as your RPG ...
RPG do handle his parameters quite well. I don't know the exact maximum size from the top of my head, but it is reasonable big. So, you won't have a technical issue. But I think you will have a development issue. I've tried to debug program call with many, and/or big values for the parameters. Believe me, that was no fun in the native iSeries debugger 8-(
In my current job we do use MQ a lot to communicate between programs. MQ is available on many platforms and it has interfaces for many languages. It is messaging instead of direct calls (different then your question) but it works great. You can put any object (small, big, XML or binary file) into the queue and the program on the other side (e.g. your C# program) will receive it exactly the same.
At last, don't forget that the iSeries do have Java on board. Class libraries for XML including Xalan are available. Maybe that is the way to go. Gather the values in RPG, create and send the XML with Java. Java and RPG works together fine.