I will start with the code first and then explain what's happening.
Code:
XPathNavigator DOM = this.MainDataSource.CreateNavigator();
XPathNodeIterator nodes = DOM.Select("/my:myFields/my:RepeatingGroup", this.NamespaceManager);
XPathNavigator nodesNavigator = nodes.Current;
XPathNodeIterator nodesText = nodesNavigator.SelectDescendants(XPathNodeType.Element, false);
string FirstName = "";
string LastName = "";
while (nodesText.MoveNext())
{
if (nodesText.Current.Name == "my:FirstName")
{
FirstName = nodesText.Current.Value.ToString();
}
nodesText.MoveNext();
if (nodesText.Current.Name == "my:LastName")
{
LastName= nodesText.Current.Value.ToString();
}
}
nodesText = null;
nodesNavigator = null;
nodes = null;
DOM = null;
Explanation:
It's a very commong scenario. Developers want to read from the repeating table programmatically. The above code just does that. You take the XPath for the repeating group and create a nodes iterator object. This will iterate through all the descendant nodes. If the node type (XPathNodeType) is "Element", the value will be read into a string variable. That's it. Use MoveNext() to move to the next node in the hierarchy. It's as simple as that!