InfoPath 2003 オブジェクト モデルを使用してフォーム データにアクセスする

InfoPath フォームの機能を拡張しようと思うと、多くの場合、フォームの基になる XML ドキュメントに関する情報へのアクセス、XML ドキュメントに記述されているデータへのアクセス、XML ドキュメントに対する何らかの操作の実行などの処理をプログラムで行う必要が出てきます。 InfoPath オブジェクト モデルでは、XDocument インターフェイスと XDocumentsCollection インターフェイスを関連させて使用することにより、フォームの基になる XML ドキュメントにアクセスしたり、その XML ドキュメントを操作したりすることができます。

XDocument インターフェイスには、実にさまざまなプロパティ、メソッド、およびイベントが用意されており、フォームの基になる XML ドキュメントを扱えるだけではなく、InfoPath のユーザー インターフェイスで行える多数の操作を実行することもできるため、このインターフェイスは InfoPath オブジェクト モデルの中では最も便利な型の 1 つと言えます。 InfoPath 2003 互換オブジェクト モデルを使用して作成されたマネージド コード プロジェクトでは、名前が付けられた thisXDocumentXDocument 型の変数が、プロジェクトのフォーム コードに_StartUpイベント ハンドラーを含むクラスのメソッドで自動的に定義されます。 フォームのコードで 変数を thisXDocument 使用して 、XDocument インターフェイスとそのメンバーにアクセスできます。

XDocumentsCollection インターフェイスの概要

XDocumentsCollection インターフェイスには、次のメソッドおよびプロパティがあります。フォームの開発者は、これらを使用することにより、コレクションに含まれている XDocument オブジェクトを管理できます。

名前 説明
Close メソッド
指定したフォームを閉じます。
New メソッド
既存のフォームに基づいて新しいフォームを作成します。
NewFromSolution メソッド
既存のフォーム テンプレートに基づいて新しいフォームを作成します。
NewFromSolutionWithData メソッド
指定した XML データとフォーム テンプレートを使用して、新しい InfoPath フォームを作成します。
Open メソッド
指定したフォームを開きます。
Count プロパティ
コレクションに含まれている XDocument オブジェクトの数を返します。
Item プロパティ
指定した XDocument オブジェクトへの参照を返します。

XDocument インターフェイスの概要

XDocument インターフェイスには、次のメソッドとプロパティがあります。フォームの開発者は、これらを使用することにより、フォームの基になる XML ドキュメントと相互作用したり、その XML ドキュメントに対して操作を実行したりできます。

名前 説明
GetDataVariable メソッド
指定したデータ変数の文字列値を返します。
GetDOM メソッド
指定した DataObject オブジェクトに関連付けられている XML ドキュメント オブジェクト モデル (DOM) への参照を返します。
ImportFile メソッド
指定したフォームを現在開いているフォームにインポート (マージ) します。
PrintOut メソッド
フォームの現在のビューを印刷します。
Query メソッド
フォームに関連付けられているデータ アダプターからデータを取得します。
Save メソッド
現在開いているフォームを保存します。
SaveAs メソッド
現在開いているフォームを指定された名前で保存します。
SetDataVariable メソッド
指定したデータ変数の値を設定します。
Submit メソッド
デザイン モードで確立された送信操作に従ってフォームを送信します。
DataObjects プロパティ
DataObjects コレクションへの参照を返します。
DOM プロパティ
フォームのソース XML データが格納されている XML DOM への参照を返します。
Errors プロパティ
Errors コレクションへの参照を返します。
Extension プロパティ
フォーム コード ファイルに含まれているすべての関数と変数を表すオブジェクトへの参照を返します。
IsDirty プロパティ
フォーム内のデータが変更されているかどうかを示す Boolean 値を返します。
IsDOMReadOnly プロパティ
XML DOM が読み取り専用に設定されているかどうかを示す Boolean 値を返します。
IsNew プロパティ
変更された後にフォームが保存されたかどうかを示す Boolean 値を返します。
IsReadOnly プロパティ
フォームが読み取り専用モードかどうかを示す Boolean 値を返します。
IsSigned プロパティ
フォームがデジタル署名されているかどうかを示す Boolean 値を返します。
Language プロパティ
フォームに使用される言語の文字列値を指定または取得します。
QueryAdapter プロパティ
データ アダプター オブジェクトへの参照を返します。
Solution プロパティ
Solution オブジェクトへの参照を返します。
UI プロパティ
UI オブジェクトへの参照を返します。
URI プロパティ
フォームの URI (Uniform Resource Identifier) が格納された文字列値を返します。
View プロパティ
View オブジェクトへの参照を返します。
ViewInfos プロパティ
ViewInfos コレクションへの参照を返します。

XDocuments コレクションと XDocument インターフェイスを使用する

XDocumentsCollection インターフェイスには、Application インターフェイスの XDocuments プロパティを使用してアクセスします。 InfoPath 2003 互換オブジェクト モデルを使用して作成されたマネージド コード プロジェクトでは、プロジェクトのフォーム コードのメソッドで_StartUpインスタンス化された変数を使用thisApplicationして XDocumentsCollection インターフェイスにアクセスできます。 次に示すコードは、現在のプロジェクトの XDocumentsCollection インターフェイスを参照する変数を作成します。

XDocumentsCollection xdocs;
xdocs = thisApplication.XDocuments;
// Write code here to work with the XDocumentsCollection.
Dim xdocs As XDocumentsCollection
xdocs = thisApplication.XDocuments
' Write code here to work with the XDocumentsCollection.

InfoPath 2003 互換オブジェクト モデルを使用して作成されたマネージド コード プロジェクトでは、プロジェクトのフォーム コードのメソッドでStartUpインスタンス化された変数を使用thisXDocumentして XDocument インターフェイスにアクセスできます。 次のコード行では、 変数を thisXDocument 使用して現在のプロジェクトの XDocument インターフェイスにアクセスし、現在開いているフォームの URI をアラート メッセージに表示します。

thisXDocument.UI.Alert(thisXDocument.URI);
thisXDocument.UI.Alert(thisXDocument.URI)

注:

XDocument インターフェイスを使用してフォームの基になる XML ドキュメントにアクセスすると、現在開いているフォームに関連付けられている XML ドキュメントにアクセスできます。

XDocument インターフェイスのキー プロパティは DOM プロパティです。 このプロパティは、フォームのソース XML データが格納された XML DOM への参照を返します。 DOM プロパティを使用すると、XML DOM でサポートされている任意のプロパティとメソッドを使用できます。 たとえば、次に示すコードは、XML DOM の xml プロパティを使用して、フォームの基になる XML ドキュメントのすべての内容を取得し、表示しています。

string xmldoc;
xmldoc = thisXDocument.DOM.xml;
// Display xml.
thisXDocument.UI.Alert(xmldoc);
Dim xmldoc As String
xmldoc = thisXDocument.DOM.xml
' Display xml.
thisXDocument.UI.Alert(xmldoc)

注:

XML DOM と、XML DOM でサポートしているすべてのプロパティとメソッドについては、MSDN の MSXML SDK を参照してください。