You do need to use an XPathNodeIterator with a while loop.
Here is some pseudo-code.
// Create an XPathNavigator object for the form's main data source.
XPathNavigator xnDoc = this.MainDataSource.CreateNavigator();
// Create an XPathNodeIterator object for the new requests from your MAIN datasource.
XPathNodeIterator xiNewRequests = xnDoc.Select("/my:myFields/my:gpRequests/my:gpRequest", ns); "my:ID"
// See if any new requests have been added.
if (xiNewRequests.Count > 0)
{
while (xiNewRequests.MoveNext())
{
// Put your processing logic here
} // end While Loop
} // end if