XPathNavigator クラスおよび XPathNodeIterator クラスを操作するHow to: Work with the XPathNavigator and XPathNodeIterator Classes

フォーム テンプレートのデータ ソースの XML データにアクセスして操作するには、Microsoft.Office.InfoPath 名前空間によって提供されるマネージ コード オブジェクト モデルの多くのメンバーは、 System.Xml.XPath 名前空間の XPathNavigator クラスのインスタンスを作成するか、そのインスタンスが渡されます。InfoPath オブジェクト モデルのメンバーから返される XPathNavigator オブジェクトにアクセスした後、 XPathNavigator クラスのプロパティとメソッドを使用してデータを操作できます。To access and manipulate the XML data in form template data sources, many members of the managed code object model provided by the Microsoft.Office.InfoPath namespace either create or can be passed an instance of the XPathNavigator class of the System.Xml.XPath namespace. After you have access to an XPathNavigator object returned by an InfoPath object model member, you can use the properties and methods of the XPathNavigator class to work with the data.

XPathNavigator クラスを使用する Microsoft.Office.InfoPath 名前空間のメンバーの中で最もよく使用されるメンバーは、 DataSource クラスの CreateNavigator メソッドです。このメソッドを使用すると、 DataSource オブジェクトで表される保存データを操作できます。 CreateNavigator メソッドでは、 DataSource オブジェクトで表されるデータ ソースのルートに置かれる XPathNavigator オブジェクトを作成します。The most frequently used member of the Microsoft.Office.InfoPath namespace that uses the XPathNavigator class is the CreateNavigator method of the DataSource class, which enables you to work with the stored data represented by a DataSource object. The CreateNavigator method creates an XPathNavigator object positioned at the root of the data source represented by the DataSource object.

ヒント

スクリプトから MSXML5 を使用して Microsoft InfoPath 2003 のデータを操作する方法に慣れている場合は、 CreateNavigator メソッドを DataObjectDOM プロパティに代わるものと考えることができます。If you are familiar with using MSXML5 from script to work with data in Microsoft InfoPath 2003, you can think of the CreateNavigator method as the replacement for the DOM property of the DataObject.

XPathNavigator クラスを使用して、フォームのメイン データ ソースにアクセスするUsing the XPathNavigator Class to Access the Main Data Source of the Form

フォームのメイン データ ソースにアクセスするには、 this (C#) または Me (Visual Basic) キーワードから CreateNavigator メソッドを直接呼び出します。次の例では、 CreateNavigator メソッドを使用して、メイン データ ソースのルートに置かれる XPathNavigator オブジェクトを作成し、 XPathNavigator クラスの OuterXml プロパティを使用して、返される XML をメッセージ ボックスに表示します。To access the main data source of the form, call the CreateNavigator method directly from the this (C#) or Me (Visual Basic) keyword. The following example creates an XPathNavigator object positioned at the root of the main data source by using the CreateNavigator method, and then uses the OuterXml property of the XPathNavigator class to display the XML returned in a message box.

XPathNavigator myNavigator = 
   this.CreateNavigator();
MessageBox.Show("Main data source XML: " +
   myNavigator.OuterXml.ToString());
Dim myNavigator As XPathNavigator  = _
   Me.CreateNavigator()
MessageBox.Show("Main data source XML: " & _
   myNavigator.OuterXml.ToString())

注意

this または Me キーワードから CreateNavigator メソッドを直接呼び出すことは、 MainDataSource プロパティを使用するか ( )、this.MainDataSource.CreateNavigator() クラスの DataSources プロパティに空文字列を渡して ( )、this.DataSources[""].CreateNavigator() メソッドを呼び出すのと同じです。Calling the CreateNavigator method directly from the this or Me keyword is equivalent to calling CreateNavigator method by using the MainDataSource property ( this.MainDataSource.CreateNavigator()) or by passing an empty string to the DataSources property of the XmlForm class ( this.DataSources[""].CreateNavigator()).

メイン データ ソース内のフィールドを表す XML ノードを選択および設定するSelecting and Setting the XML Nodes for Fields in the Main Data Source

データ ソース内のフィールドを表す単一の XML ノードを選択するには、 XPathNavigator クラスの SelectSingleNode(String,IXmlNamespaceResolver) メソッドを使用します。一連の繰り返しフィールドまたはグループを操作する場合は、 XPathNavigator クラスの Select(String,IXmlNamespaceResolver) メソッドを使用します。このメソッドは、ノードのコレクションを表す XPathNodeIterator オブジェクトを返します。To select the single XML node for a field in a data source, use the SelectSingleNode(String,IXmlNamespaceResolver) method of the XPathNavigator class. If you want to work with a set of repeating fields or repeating groups, use the Select(String,IXmlNamespaceResolver) method of the XPathNavigator class. This method returns an XPathNodeIterator object that represents a collection of nodes.

単一ノードの値を選択および設定するSelecting and Setting the Value of a Single Node

使用する必要があるオーバーロードの SelectSingleNode メソッドには、XPath 式を文字列として取る xpath パラメーターと、名前空間プレフィックスを解決するための XmlNamespaceManager オブジェクトを取る resolver パラメーターがあります。フォームのメイン データ ソース内の単一ノードを選択するには、 xpath パラメーター用に選択するフィールドまたはグループを指定する XPath 式と、 XmlForm オブジェクトの NamespaceManager プロパティが返す XmlNamespaceManager オブジェクトを渡します。返される XmlNamespaceManager オブジェクトは、読み込み時に、フォーム テンプレートのフォーム定義ファイル (.xsf) によって定義されるすべての名前空間で初期化されます。The overloaded SelectSingleNode method that you must use has an xpath parameter that takes an XPath expression as a string, and a resolver parameter that takes an XmlNamespaceManager object for resolving namespace prefixes. To select a single node in the form's main data source, pass in an XPath expression that specifies the field or group that you want to select for the xpath parameter, together with the XmlNamespaceManager object that is returned by the NamespaceManager property of the XmlForm object. The returned XmlNamespaceManager object is initialized at load time with all the namespaces that are defined by the form template's form definition file (.xsf).

ヒント

フォームのデータ ソース内のノードを選択する XPath 式を最も簡単に作成するには、[ フィールド] 作業ウィンドウ内でフィールドまたはグループを右クリックし、[ XPath のコピー] をクリックします。複雑な、または深い入れ子になった XML スキーマ内のノードにアクセスするための手動編集 XPath 式を作成してテストするには、フォームに 式ボックス コントロールを追加し、フォームをプレビューして結果を表示します。The easiest way to create an XPath expression for selecting a node in the form's data source is to right-click the field or group in the Fields task pane, and then click Copy XPath. To create and test hand-edited XPath expressions for accessing nodes in a complex or heavily nested XML schema, add an Expression Box control to the form, specify the XPath expression for the control, and then preview the form to display the results.

次の例では、 SelectSingleNode メソッドを使用して、 EmailAlias フィールド用の単一ノードを選択します。さらに、 XPathNavigator クラスの SetValue メソッドと User クラスの UserName プロパティを使用して、そのフィールドの値を現在のユーザーのエイリアスに設定します。The following example uses the SelectSingleNode method to select the single node for the EmailAlias field. Then it uses the SetValue method of the XPathNavigator class and the UserName property of the User class to set the value of the field to the current user's alias.

XPathNavigator emailAlias = 
   this.CreateNavigator().SelectSingleNode(
      "/my:myFields/my:EmailAlias", NamespaceManager);
emailAlias.SetValue(this.Application.User.UserName.ToString());
Dim emailAlias As XPathNavigator = _
   Me.CreateNavigator().SelectSingleNode( _
      "/my:myFields/my:EmailAlias", NamespaceManager)
emailAlias.SetValue(Me.Application.User.UserName.ToString())

XPath 式の作成方法については、MSDN の「XPath リファレンス」と、「XML Path Language (XPath) Version 1.0 W3C Recommendation」を参照してください。For information about how to create XPath expressions, see the XPath Reference on MSDN, and the XML Path Language (XPath) Version 1.0 W3C Recommendation.

xsi:nil 属性を持つノードの値を設定するSetting the Value of a Node That Has the xsi:nil Attribute

ある特定のデータ型では、空白フィールドの値をプログラムで設定しようとすると、"スキーマの検証でデータ型以外のエラーが見つかりました。" というエラーが発生します。通常、このエラーの原因は、要素の xsi:nil 属性が true に設定されていることにあります。フォーム内の空白フィールドを表す基本 XML 要素を調べると、そのように設定されていることが見つかります。たとえば、次の空白の Date フィールドを表す XML フラグメントの xsi:nil 属性は true に設定されています。For certain data types, trying to set the value of a blank field programmatically raises the error "Schema validation found non-data type errors." Typically the cause of this error is that the element has the xsi:nil attribute set to true. If you examine the underlying XML element for the blank field in the form, you can see this setting. For example, the XML fragment for the following blank Date field has the xsi:nil attribute set to true.

<my:myDate xsi:nil="true"></my:myDate>

xsi:nil 属性が true に設定されている場合、要素自体は存在するが、値を持たない、つまり、この要素は null であることを示します。このようなノードに対してプログラムで値を設定しようとすると、現在この要素は null であるとしてフラグが設定されているため、"スキーマの検証でデータ型以外のエラーが見つかりました。" というメッセージが表示されます。InfoPath は、次のデータ型の null フィールドについては xsi:nil 属性を true に設定します。If the xsi:nil attribute is set to true, it indicates that the element is present but has no value, or in other words, is null . If you try to programmatically set the value of such a node, InfoPath displays the "Schema validation found non-data type errors" message because the element is currently flagged as being null . InfoPath sets the xsi:nil attribute to true for null fields of the following data types:

  • Whole Number (integer)Whole Number (integer)

  • Decimal (double)Decimal (double)

  • Date (date)Date (date)

  • Time (time)Time (time)

  • Date and Time (dateTime)Date and Time (dateTime)

このエラーを回避するには、コードで xsi:nil 属性の有無を調べる必要があります。この属性が存在する場合は、ノードの値を設定する前に、属性自体を削除します。次のサブルーチンでは、設定するノードに置かれる XpathNavigator オブジェクトを取得し、 nil 属性の有無を確認し、属性が存在する場合は削除します。To prevent this error, your code must test for the xsi:nil attribute, and if it is present, remove it before setting the value of the node. The following subroutine takes an XpathNavigator object positioned on the node that you want to set, checks for the nil attribute, and then deletes it, if it exists.

public void DeleteNil(XPathNavigator node)
{
   if (node.MoveToAttribute(
      "nil", "http://www.w3.org/2001/XMLSchema-instance"))
      node.DeleteSelf();
}
Public Sub DeleteNil(ByVal node As XPathNavigator)
   If (node.MoveToAttribute( _
      "nil", "http://www.w3.org/2001/XMLSchema-instance")) Then
      node.DeleteSelf()
   End If
End Sub

たとえば、次の例では Date フィールドを設定していますが、この例に示すように、 xsi:nil 属性が存在するかどうかがわからないデータ型のフィールドを設定する前に、このサブルーチンを呼び出すことができます。You can call this subroutine before you try to set a field of a data type that might have the xsi:nil attribute, as shown in the following example that sets a Date field.

// Access the main data source.
XPathNavigator myForm = this.CreateNavigator();
// Select the field.
XPathNavigator myDate = myForm.SelectSingleNode("/my:myFields/my:myDate", NamespaceManager);
// Check for and remove the "nil" attribute.
DeleteNil(myDate);
// Build the current date in the proper format. (yyyy-mm-dd)
string curDate = DateTime.Today.Year + "-" + DateTime.Today.Month + 
   "-" + DateTime.Today.Day;
// Set the value of the myDate field.
myDate.SetValue(strCurDate);
' Access the main data source.
Dim myForm As XPathNavigator = Me.CreateNavigator()
' Select the field.
Dim myDate As XPathNavigator = _
   myForm.SelectSingleNode("/my:myFields/my:myDate", NamespaceManager)
' Check for and remove the "nil" attribute.
DeleteNil(myDate)
' Build the current date in the proper format. (yyyy-mm-dd)
Dim curDate As String = DateTime.Today.Year + "-" + _
   DateTime.Today.Month + "-" + DateTime.Today.Day
' Set the value of the myDate field.
myDate.SetValue(strCurDate)

注意

InfoPath の XPathNavigator オブジェクトの実装は、 SetTypedValue メソッド (特定の型の値を使用してノードを設定するために使用) を公開していますが、InfoPath は、このメソッドを実装していません。代わりに、 SetValue メソッドを使用して、ノードのデータ型に適切な形式の文字列値を渡す必要があります。Although the implementation of the XPathNavigator object in InfoPath exposes the SetTypedValue method—which is used to set a node using a value of a specific type—InfoPath does not implement that method. You must use the SetValue method instead, and pass a string value of the correct format for the data type of the node.

繰り返しノードを選択および設定するSelecting and Setting a Set of Repeating Nodes

繰り返される回数が不確かなフィールドまたはグループの一式を指定するには、XPathNavigator クラスの Select メソッドを使用します。To specify a set of repeating fields or groups that are of an indeterminate number, use the Select method of the XPathNavigator class. This method returns an XPathNodeIterator object that you can use to iterate over the specified collection of nodes. このメソッドから返される XPathNodeIterator オブジェクトを使用して、指定したノードのコレクションを反復処理できます。To specify a set of repeating fields or groups that are of an indeterminate number, use the Select method of the XPathNavigator class. This method returns an XPathNodeIterator object that you can use to iterate over the specified collection of nodes.

次の例では、フォーム テンプレートに含まれる箇条書きまたは同様の反復コントロールが、field1 という名前の繰り返し要素にバインドされていることを前提とします。The following example assumes that your form template contains a Bulleted List or similar repeating control that is bound to a repeating element named field1. フィールドの XPath を Select メソッドに渡し、このメソッドから返された XPathNodeIteratornodes 変数に割り当てます。The XPath of the field is passed to the Select method, and the returned XPathNodeIterator is assigned to the nodes variable. MoveNext メソッドを使用してノードのコレクションを反復処理し、Current プロパティを使用して、現在のノードに位置する XPathNavigator オブジェクトを返します。You use the MoveNext method to iterate over the collection of nodes, and the Current property to return an XPathNavigator object positioned on the current node. 最後に、Value プロパティを使用して、繰り返される各フィールドの値を取得し、表示します。Finally, use the Value property to retrieve and display the value of each repeating field.

string message = String.Empty;
XPathNavigator root = this.CreateNavigator();
XPathNodeIterator nodes = 
   root.Select("/my:myFields/my:group1/my:field1", NamespaceManager);
while (nodes.MoveNext())
{
    message += nodes.Current.Value + System.Environment.NewLine;
}
MessageBox.Show(message);
Dim message As String = String.Empty
Dim root As XPathNavigator = Me.CreateNavigator()
Dim nodes As XPathNodeIterator = _
   root.Select("/my:myFields/my:group1/my:field1", NamespaceManager)
Do While nodes.MoveNext
    message += nodes.Current.Value &amp; System.Environment.NewLine
Loop
MessageBox.Show(message)

前の例では、指定された繰り返しフィールド内で文字列値を処理しています。ただし、フィールド内に数値が含まれている場合は、同様のコードを使用してフィールド内の値の反復処理を行い、値の合計や平均を算出するなどの計算を実行できます。The previous example works with string values in the specified repeating field. However, if the field contains numeric values, you can use similar code to iterate over the values in the field to perform arithmetic, such as calculating the total or average of the values.

同様に、 Value プロパティを使用して、繰り返しフィールドの各インスタンスの値を取得するのではなく、 SetValue メソッドを使用して、フィールドの反復処理を行って値を設定できます。次に例を示します。Similarly, instead of using the Value property to retrieve the value of each instance of the repeating field, you can use the SetValue method to iterate over the fields and set their values, as shown in the following example.

XPathNavigator root = this.CreateNavigator();
XPathNodeIterator nodes = 
   root.Select("/my:myFields/my:group1/my:field1", NamespaceManager);
int myInt = 1;
while (nodes.MoveNext())
{
   nodes.Current.SetValue(myInt.ToString());
   myInt = myInt + 1;
}
Dim root As XPathNavigator = Me.CreateNavigator()
Dim nodes As XPathNodeIterator = _
   root.Select("/my:myFields/my:group1/my:field1", NamespaceManager)
Dim myInt As Integer = 1
Do While nodes.MoveNext
   nodes.Current.SetValue(myInt.ToString())
   myInt = myInt + 1
Loop

XPathNavigator クラスを使用して、外部データ ソースにアクセスするUsing the XPathNavigator Class to Access an External Data Source

フォームに関連付けられている外部データ ソースにアクセスするには、データ ソースの名前を XmlForm クラスの DataSources プロパティに渡します。新しい外部データ ソースへの接続を作成したり、既存の外部データ ソース接続の名前の一覧を表示したりするには、リボンの [ データ] タブの [ データ接続] をクリックします。To access an external data source associated with the form, pass the name of the data source to the DataSources property of the XmlForm class. To create a connection to a new external data source, or to view a list of the names of existing external data source connections, click Data Connections on the Data tab of the ribbon.

次のコード サンプルでは、 CreateNavigator メソッドを使用して外部データ ソース "CityList" のルートに置かれる XPathNavigator オブジェクトを作成し、 XPathNavigator クラスの OuterXml プロパティを使用して、返される XML をメッセージ ボックスに表示する方法を示します。このコード サンプルでは、XML ドキュメントや SharePoint リストなどの外部データ ソースに保存されている都市名のリストへのデータ接続を作成し、そのデータ接続に "CityList" という名前を付けていることを想定しています。The following code sample shows how to create an XPathNavigator object positioned at the root of an external data source named "CityList" by using the CreateNavigator method, and then uses the OuterXml property of the XPathNavigator class to display the XML returned in a message box. This code sample assumes that you created a data connection to a list of city names that are stored in an external data source, such as an XML document or a SharePoint list, and named that data connection "CityList."

XPathNavigator myNavigator = 
   this.DataSources["CityList"].CreateNavigator();
MessageBox.Show("External data source XML: " + 
   myNavigator.OuterXml.ToString());
Dim myNavigator As XPathNavigator  = _
   Me.DataSources("CityList").CreateNavigator()
MessageBox.Show("External data source XML: " &amp; _
   myNavigator.OuterXml.ToString())

外部データ ソースのルートに置かれる XPathNavigator オブジェクトにアクセスした後は、 SelectSingleNode および SetValue メソッドなど、 XPathNavigator クラスのメンバーを使用して、そのデータ ソース内のデータを操作できます。After you have access to an XPathNavigator object positioned at the root of an external data source, you can use members of the XPathNavigator class such as the SelectSingleNode and SetValue methods to work with the data it contains.

XPathNavigator クラスと XPathNodeIterator クラスを使用する InfoPath オブジェクト モデルのメンバーInfoPath Object Model Members That Use the XPathNavigator and XPathNodeIterator Classes

次の表に、 XPathNavigator クラスを使用して XML データのアクセス、操作、および送信を行う Microsoft.Office.InfoPath 名前空間のすべてのメンバーの概要を示します。The following table provides a summary of all of the members of the Microsoft.Office.InfoPath namespace that use the XPathNavigator class to access, manipulate, or submit XML data.

親クラスParent Class メンバーMember
AdoQueryConnectionAdoQueryConnection class
BuildSqlFromXmlNodes メソッドBuildSqlFromXmlNodes method
AdoSubmitConnectionAdoSubmitConnection class
BuildSqlFromXmlNodes メソッドBuildSqlFromXmlNodes method
ClickedEventArgsClickedEventArgs
Source プロパティSource property
ContextChangedEventArgsContextChangedEventArgs
Context プロパティContext property
DataSourceDataSource
CreateNavigator メソッドCreateNavigator method
GetNamedNodeProperty メソッドGetNamedNodeProperty method
SetNamedNodeProperty メソッドSetNamedNodeProperty method
EmailSubmitConnectionEmailSubmitConnection class
Execute メソッドExecute method
FileQueryConnectionFileQueryConnection class
Execute メソッドExecute method
FileSubmitConnectionFileSubmitConnection class
Execute メソッドExecute method
FormErrorFormError
Site プロパティSite property
FormErrorCollectionFormErrorCollection
Add メソッドAdd methods
FormTemplateFormTemplate
Manifest プロパティManifest property
MergeEventArgsMergeEventArgs
Xml プロパティXml property
SharepointListQueryConnectionSharepointListQueryConnection
Execute メソッドExecute method
SignatureSignature
SignatureBlockXmlNode プロパティSignatureBlockXmlNode property
SignedDataBlockSignedDataBlock
SignatureContainer プロパティSignatureContainer property
ViewView
GetContextNodes メソッドGetContextNodes methods
SelectNodes メソッドSelectNodes methods
SelectText メソッドSelectText methods
WebServiceConnectionWebServiceConnection class
Execute メソッドExecute method
GenerateDataSetDiffGram メソッドGenerateDataSetDiffGram method
XmlEventArgsXmlEventArgs
OldParent プロパティOldParent property
Site プロパティSite property
XmlForm"XMLForm"
MainDataSource プロパティ。 DataSource オブジェクトを返します。このオブジェクトは、フォームの基になる XML ドキュメント (メイン データ ソース) のルートに置かれる XPathNavigator オブジェクトを作成する CreateNavigator メソッドを備えます。 MainDataSource property, which returns a DataSource object that in turn provides the CreateNavigator method for creating an XPathNavigator object positioned at the root of the form's underlying XML document (main data source).
MergeForm メソッドMergeForm method
XmlFormCollectionXmlFormCollection
NewFromFormTemplate メソッドNewFromFormTemplate method
XmlValidatingEventArgsXmlValidatingEventArgs
ReportError メソッドReportError methods

XPathNavigator オブジェクトを返すか受け取る InfoPath オブジェクト モデル メンバーに加え、次のメソッドでは、ビューで指定または選択された項目の XML ノードに対して反復処理を行うため、 System.Xml.XPath 名前空間の XPathNodeIterator クラスのインスタンスを返します。In addition to the InfoPath object model members that return or accept an XPathNavigator object, the following methods return an instance of the XPathNodeIterator class of the System.Xml.XPath namespace for iterating over the XML nodes of items that are specified or selected in a view.

親クラスParent Class メンバーMember
ViewView
GetContextNodes メソッドGetContextNodes methods
GetSelectedNodes メソッドGetSelectedNodes method

XPathNavigator クラスと XPathNodeIterator クラスを使用して、ビューで選択されたデータを操作するUsing the XPathNavigator and XPathNodeIterator Classes to Work with Data Selected in a View

次の例では、 XPathNavigator クラスと XPathNodeIterator クラスのメンバーを使用して、次のシーケンスのフォーム データを操作します。The following example uses members of both the XPathNavigator and XPathNodeIterator classes to work with form data in the following sequence:

  1. DataSource クラスの CreateNavigator メソッドを使用して、 repeatingTableRow1 という名前の XPathNavigator オブジェクト変数を作成します。このオブジェクト変数は、既定では、フォームの基になる XML ドキュメント (メイン データ ソース) のルートに置かれます。The CreateNavigator method of the DataSource class is used to create an XPathNavigator object variable named repeatingTableRow1, which by default is positioned at the root of the underlying XML document of the form (the main data source).

  2. XPathNavigator クラスの SelectSingleNode メソッドを使用して、 XPathNavigator オブジェクトの位置を、データ ソースの group2 にバインドされた [ 繰り返しテーブル] コントロールの先頭行に移動します。The SelectSingleNode method of the XPathNavigator class is used to move the position of the XPathNavigator object to the first row of a Repeating Table control bound to group2 in the data source.

  3. repeatingTableRow1 オブジェクト変数を View クラスの SelectNodes メソッドに渡し、その行のノードを選択します。The repeatingTableRow1 object variable is passed to the SelectNodes method of the View class to select the nodes in that row.

  4. selectedNodes という名前の XPathNodeIterator オブジェクト変数を宣言し、 View クラスの GetSelectedNodes メソッドを使用して、 XPathNodeIterator オブジェクトに選択されたノードを入力します。An XPathNodeIterator object variable named selectedNodes is declared and the GetSelectedNodes method of the View class is used populate the XPathNodeIterator object with the selected nodes.

  5. XPathNodeIterator クラスの Count プロパティを使用して、 selectedNodes オブジェクト変数に含まれているノード数を表示します。The Count property of the XPathNodeIterator class is used to display the number of nodes contained in the selectedNodes object variable.

  6. For/Each ループを使用して、selectedNodes オブジェクト変数のノードに対して反復処理を行い、 XPathNavigator クラスの NameInnerXml、および Value プロパティを使用して各ノードに関する情報を表示します。A For/Each loop is used to iterate over the nodes in the selectedNodes object variable and display information about each node using the Name, InnerXml, and Value properties of the XPathNavigator class.

// Create XPathNavigator and specify XPath for nodes.
XPathNavigator repeatingTableRow1 = 
   this.CreateNavigator().SelectSingleNode(
   "/my:myFields/my:group1/my:group2[1]", NamespaceManager);
// Select nodes in specified XPathNavigator.
CurrentView.SelectNodes(repeatingTableRow1);
// Get selected nodes.
XPathNodeIterator selectedNodes = 
   CurrentView.GetSelectedNodes();
// Display the count of selected nodes.
MessageBox.Show(selectedNodes.Count.ToString());
// Loop through collection and display information.
foreach (XPathNavigator selectedNode in selectedNodes)
{
   MessageBox.Show(selectedNode.Name);
   MessageBox.Show(selectedNode.InnerXml);
   MessageBox.Show(selectedNode.Value);
}
' Create XPathNavigator and specify XPath for nodes.
Dim repeatingTableRow1 As XPathNavigator  = _
   Me.CreateNavigator().SelectSingleNode( _
   "/my:myFields/my:group1/my:group2[1]", NamespaceManager)
' Select nodes in specified XPathNavigator.
CurrentView.SelectNodes(repeatingTableRow1)
' Get selected nodes.
Dim selectedNodes As XPathNodeIterator = _
   CurrentView.GetSelectedNodes()
' Display the count of selected nodes.
MessageBox.Show(selectedNodes.Count.ToString())
' Loop through collection and display information.
Dim selectedNode As XPathNavigator
For Each selectedNode In selectedNodes
   MessageBox.Show(selectedNode.Name)
   MessageBox.Show(selectedNode.InnerXml)
   MessageBox.Show(selectedNode.Value)
Next

InfoPath フォーム テンプレートからの XML データの操作方法の詳細については、「InfoPath 2007 フォーム テンプレートで XPathNavigator クラスを使用して XML データを操作する」を参照してください。For more information about how to work with XML data from InfoPath form templates, see Working with XML Data Using the XPathNavigator Class in InfoPath 2007 Form Templates.