.NET APIでは、以下に示す操作ができます。
検索条件に一致するXML文書の件数を取得する
検索条件に一致するXML文書を指定した形式で取得する
特定のXML文書をすべて取得する
検索条件に一致するXML文書をソートして取得する
検索条件に一致するXML文書を連続して取得する
検索条件に一致するXML文書の値を集計して取得する
これらの操作を組み合わせることによって、さまざまなアプリケーションを作成することができます。
参考
ダイレクトアクセスキーを使ったデータ検索も可能です。
ダイレクトアクセスキー機能の詳細については、“第6章 ダイレクトアクセス機能”を参照してください。
C# .NETでのデータを検索するサンプルプログラムについては、“G.1 データの検索”、VB .NETでのデータを検索するサンプルプログラムについては、“H.1 データの検索”、C++ .NETでのデータを検索するサンプルプログラムについては、“I.1 データの検索”を参照してください。
以降に、データの検索を行うアプリケーションの作成方法について説明します。
条件に一致するデータを取り出す前に、件数のみ取得したい場合があります。
このような場合、GetHitCountメソッドで検索式を指定し、件数のみを取得します。
条件に一致するXML文書の件数を取得する場合の流れについて、以下の図に示します。
図10.5 条件に一致するXML文書の件数を取得する場合の流れ
C# .NETの記述例
ShunService service = new ShunService(); service.Connect(); int hitCount = service.GetHitCount( "/document/base/prefecture == '大阪'" ); (1) Console.WriteLine( "[ヒット件数] = {0}", hitCount ); service.Disconnect(); |
VB .NETの記述例
Dim service As New ShunService() service.Connect() Dim hitCount As Integer = service.GetHitCount( "/document/base/prefecture == '大阪'" ) (1) Console.WriteLine( "[ヒット件数] = {0}", hitCount ) service.Disconnect() |
GetHitCountの引数に検索式を指定して、ヒット件数を取得します。
検索式の詳細は、“付録B 検索式、リターン式およびソート式の書式”を参照してください。
Webアプリケーションでは、画面にすべての検索結果を表示するのではなく、任意の件数ごとにページを制御することが一般的です。
このような場合、ShunSearchRequirementオブジェクトの返信開始番号(ReplyNumber)と返信要求件数(RequestCount)を指定して、取得するデータの件数を制御します。
件数に応じて検索した結果を取得する場合の流れについて、以下の図に示します。
図10.6 件数に応じて検索した結果を取得する場合の流れ
C# .NETの記述例
ShunService service = new ShunService(); service.Connect(); ShunSearchRequirement req = new ShunSearchRequirement(); (1) |
VB .NETの記述例
Dim service As New ShunService() service.Connect() Dim req As New ShunSearchRequirement() (1) |
ShunSearchRequirementオブジェクトを作成し、検索条件として以下のプロパティを設定します。
プロパティ | 説明 |
---|---|
QueryExpression | 検索式を指定します。省略はできません。 |
ReturnExpression | リターン式を指定します。 |
ReplyNumber | 返信開始番号を指定します。省略した場合、1が指定されます。 |
RequestCount | 返信要求件数を指定します。省略した場合、検索した結果から得られる件数はconductor用動作環境ファイルまたはdirector用動作環境ファイルのAnsMaxに設定された値となります。 |
検索式およびリターン式の詳細は、“付録B 検索式、リターン式およびソート式の書式”を参照してください。
ポイント
返信要求件数には、1画面に表示する件数を指定します。
検索は、Searchメソッドに検索条件を設定したShunSearchRequirementオブジェクトを指定し、使用します。検索した結果としてShunResultSetオブジェクトが作成されます。
ポイント
検索条件に一致するXML文書のヒット件数は、ShunResultSetオブジェクトのHitCountプロパティで取得できます。この値を使用して、検索した結果のページ数などを求めることができます。
ShunResultSetオブジェクトから1件分のデータに相当するShunRecordオブジェクトを取り出し、ShunRecordオブジェクトからXML文書を取り出します。
XML文書を取り出すには、目的に応じて以下のプロパティまたはメソッドを使用します。使用可能なプロパティおよびメソッドについては以下の表を参照してください。
プロパティ名またはメソッド名 | 機能説明 |
---|---|
Dataプロパティ | XML文書をStringオブジェクトで取り出します。 |
GetDividedDataメソッド | XML文書をStringオブジェクトの2次元配列で取り出します。 |
GetStreamメソッド | XML文書をStreamオブジェクトで取り出します。 |
備考. GetDividedDataメソッドは、検索した結果をテキスト形式で取り出す場合に有効です。
検索した結果の件数が非常に多いとき、さらに条件を追加して件数を絞りたい場合があります。
このような場合、ShunSearchRequirementオブジェクトに指定する検索式に条件を追加して新しい検索式を作成し、再度検索する処理を行います。この操作を繰り返すことで、画面に表示された検索結果を参照しながら検索結果を絞り込むことができます。
条件を追加しながら検索した結果を取得する場合の流れについて、以下の図に示します。
図10.7 条件を追加しながら検索した結果を取得する場合の流れ
C# .NETおよびVB .NETの記述例
条件を追加しながら検索した結果を取得する場合の記述例については、“10.3.2.2 件数に応じて検索した結果を取得する”を参照してください。
条件を追加する場合には、ShunSearchRequirementオブジェクトに指定する検索式に条件を追加してください。
検索した結果をある特定の要素をキーとしてソートして取得したい場合があります。
データの部分情報をソートして取得するには、ShunSearchRequirementオブジェクトのSortExpressionプロパティを使用します。
データをソートして取得する場合の流れについて、以下の図に示します。
図10.8 データをソートして取得する場合の流れ
ポイント
ソートを行う場合には、検索条件に一致したすべてのXML文書を参照してソート処理を行います。検索式には、結果件数が適正な値となるような条件を指定し、ソート対象のデータを絞ることが応答性能をよくするポイントです。ソートを実施する前に検索条件に一致したXML文書の件数を調べるには、GetHitCountメソッドに検索条件を設定して使用します。
C# .NETの記述例
ShunService service = new ShunService(); service.Connect(); ShunSearchRequirement req = new ShunSearchRequirement(); (1) |
VB .NETの記述例
Dim service As New ShunService() service.Connect() Dim req As New ShunSearchRequirement() (1) |
ShunSearchRequirementオブジェクトを作成し、検索条件として以下のプロパティを設定します。ソートを行う場合は、SortExpressionプロパティにソート式を設定します。
プロパティ | 説明 |
---|---|
QueryExpression | 検索式を指定します。省略はできません。 |
ReturnExpression | リターン式を指定します。 |
SortExpression | ソート式を指定します。ソートしない場合は、省略します。 |
ReplyNumber | 返信開始番号を指定します。省略した場合、1が指定されます。 |
RequestCount | 返信要求件数を指定します。省略した場合、検索した結果から得られる件数はconductor用動作環境ファイルまたはdirector用動作環境ファイルのAnsMaxに設定された値となります。 |
検索式およびリターン式の詳細は、“付録B 検索式、リターン式およびソート式の書式”を参照してください。
ソート式の詳細は、“B.5 ソート式”を参照してください。
注意
ソート式に指定したキーの長さによって返却できる件数が決まります。最大件数は1000件です。返信開始番号や返信要求件数に返却可能な最大件数を超える値を指定しても、それ以上のデータは返却することができません。返却可能なデータの最大件数は、ReturnableCountプロパティで取得できます。
キーの長さと返却可能なデータ件数の目安については、“付録C 定量値”を参照してください。
参考
取得開始位置を指定することにより、続きのデータを取り出すことができます。これにより1000件以上のデータを取り出すことができます。詳細については、“10.3.2.7 条件に一致するXML文書を連続して取得する”を参照してください。
検索は、Searchメソッドに検索条件を設定したShunSearchRequirementオブジェクトを指定し、使用します。検索した結果としてShunResultSetオブジェクトが作成されます。
ShunResultSetオブジェクトから1件分のデータに相当するShunRecordオブジェクトを取り出し、ShunRecordオブジェクトからXML文書を取り出します。
XML文書を取り出すには、目的に応じて以下のプロパティまたはメソッドを使用します。使用可能なプロパティおよびメソッドについては以下の表を参照してください。
プロパティ名またはメソッド名 | 機能説明 |
---|---|
Dataプロパティ | XML文書をStringオブジェクトで取り出します。 |
GetDividedDataメソッド | XML文書をStringオブジェクトの2次元配列で取り出します。 |
GetStreamメソッド | XML文書をStreamオブジェクトで取り出します。 |
XML文書の中から必要なXML文書を検索する場合、はじめからXML文書の全体を取得するのではなく、XML文書を識別するのに有効な部分情報を取得します。利用者は、これらの部分情報から詳細情報を取得したいXML文書を特定します。
XML文書の全体を取り出すには、部分情報を取り出したShunRecordオブジェクトをShunRecordCollectionオブジェクトに設定し、SearchByRecordIDメソッドを使用することで目的のXML文書の全体を取り出すことができます。
レコードIDを利用してXML文書全体を取得する場合の流れについて、以下の図に示します。
図10.9 レコードIDを利用してXML文書全体を取得する場合の流れ
C# .NETの記述例
ShunService service = new ShunService(); service.Connect(); ShunSearchRequirement req = new ShunSearchRequirement(); req.QueryExpression = "/document/base/prefecture == '大阪'"; req.ReturnExpression = "/document/base/name/text()"; ShunResultSet rs = service.Search( req ); Console.WriteLine("[ヒット件数] = " + rs.HitCount); ShunRecordCollection recCol = new ShunRecordCollection(); (1) |
VB .NETの記述例
Dim service As New ShunService() service.Connect() Dim req As New ShunSearchRequirement() req.QueryExpression = "/document/base/prefecture == '大阪'" req.ReturnExpression = "/document/base/name/text()" Dim rs As ShunResultSet = service.Search( req ) Console.WriteLine( "[ヒット件数] = {0}", rs.HitCount ) Dim recCol As New ShunRecordCollection() (1) |
ShunRecordCollectionオブジェクトを作成します。
ShunRecordオブジェクトを、ShunRecordCollectionオブジェクトに設定します。
ShunRecordオブジェクトを設定するには、以下のメソッドを使用します。使用可能なメソッドについては以下の表を参照してください。
メソッド名またはプロパティ名 | 機能説明 |
---|---|
Add(ShunRecord record) | ShunRecord を ShunRecordCollection の末尾に追加します。 |
AddRange(ShunRecord[ ] records) | ShunRecord 配列の要素を ShunRecordCollection の末尾にコピーします。 |
Insert(int index, ShunRecord record) | ShunRecordCollection 内の指定したインデックス位置に、 ShunRecord を挿入します。 |
Item[int index] | 指定したインデックス位置のShunRecordを置き換えます。 |
検索の実行はSearchByRecordIDメソッドを使用します。検索した結果としてShunRecordCollectionオブジェクトが作成されます。
ShunRecordCollectionオブジェクトから1件分のデータに相当するShunRecordオブジェクトを取り出し、ShunRecordオブジェクトからXML文書を取り出します。
XML文書を取り出すには、目的に応じて以下のプロパティまたはメソッドを使用します。使用可能なプロパティおよびメソッドについては以下の表を参照してください。
プロパティ名またはメソッド名 | 機能説明 |
---|---|
Dataプロパティ | XML文書をStringオブジェクトで取り出します。 |
GetDividedDataメソッド | XML文書をStringオブジェクトの2次元配列で取り出します。 |
GetStreamメソッド | XML文書をStreamオブジェクトで取り出します。 |
備考. GetDividedDataメソッドは、検索した結果をテキスト形式で取り出す場合に有効です。
ヒット件数の上限値を設定することで、ソートまたは集計の応答性能を安定させることができます。ヒット件数が上限値を超えた場合には、ソートまたは集計を中断し検索条件に一致したヒット件数を通知します。
ヒット件数が上限値を超えないように検索式に条件を追加し、ソートまたは集計の検索範囲を絞り込みます。
ヒット件数の上限値を設定するには、HitCountLimitプロパティを使用します。
ヒット件数の上限値を設定する場合の流れについて、以下の図に示します。
図10.10 ヒット件数の上限値を設定する場合の流れ
記述例
ShunService service = new ShunService(); service.Connect(); ShunSearchRequirement req = new ShunSearchRequirement(); req.QueryExpression = "/document/base/prefecture == '大阪'"; req.ReturnExpression = "/document/base/name, /document/base/price"; req.SortExpression = "val(/document/base/price/text()) DESC"; req.HitCountLimit = 10000; (1) ShunResultSet rs = service.Search( req ); if ( rs.IsHitCountLimitOver ) { (2) Console.WriteLine ("ヒット件数が上限を超えました"); Console.WriteLine ("[ヒット件数] = " + rs.HitCount); (3) } else{ Console.WriteLine("[ヒット件数] = " + rs.HitCount); int i = 0; foreach ( ShunRecord record in rs.Records ) { ++i; Console.WriteLine( "[結果] {0}件目 = {1}", i, record.Data ); } } service.Disconnect(); |
HitCountLimitプロパティのパラメタにヒット件数の上限値を設定します。
注意
ソート式が設定されていない場合には、Searchメソッド実行時にエラーとなります。
IsHitCountLimitOverプロパティでヒット件数が上限値を超えているかの確認をします。
ヒット件数が上限値を超えている場合は、ヒット件数のみ取出し可能です。
Webアプリケーションでは、検索した結果を一定件数ごとに区切って、前後に連続したデータを取得したい場合があります。
このような場合、ShunSearchRequirementオブジェクトのPositionプロパティに、その直前の検索処理によって取得した最終位置情報、または、先頭位置情報を指定してXML文書を連続して取得します。
条件に一致するXML文書を連続して取得する場合の流れについて、以下の図に示します。
図10.11 条件に一致するXML文書を連続して取得する場合の流れ
C# .NETの記述例
ShunService service = new ShunService(); service.Connect(); ShunSearchRequirement req = new ShunSearchRequirement(); req.QueryExpression = "/document/base/prefecture == '大阪'"; req.ReturnExpression = "/document/base/name, /document/base/price"; req.SortExpression = "val(/document/base/price/text()) DESC"; req.ReplyNumber = 5; // 先頭位置情報 |
VB .NETの記述例
Dim service As New ShunService() service.Connect() Dim req As New ShunSearchRequirement() req.QueryExpression = "/document/base/prefecture == '大阪'" req.ReturnExpression = "/document/base/name, /document/base/price" req.SortExpression = "val(/document/base/price/text()) DESC" req.ReplyNumber = 5 ' 先頭位置情報 |
Positionプロパティにデータの取得位置を指定します。最初のページを表示する検索処理では、最初のデータから取り出しを行うため、データの取得位置(取得開始位置または取得終了位置)にはnullを指定します。取得位置にnullを指定すると、1件目からデータを取り出します。
Positionプロパティにデータの取得位置を指定します。次のページを表示する検索処理では、前回検索時の最終位置情報をLastPositionプロパティで取得しておき、データの取得位置(取得開始位置)に指定します。この指定により前回取得したデータの続きのデータを取得します。
Positionプロパティにデータの取得位置を指定します。前のページを表示する検索処理では、前回検索時の先頭位置情報をFirstPositionプロパティで取得しておき、データの取得位置(取得終了位置)に指定します。この指定により前回取得したデータの前の部分のデータを取得します。
検索は、Searchメソッドに検索条件を設定したShunSearchRequirementオブジェクトを指定し、使用します。検索した結果としてShunResultSetオブジェクトが作成されます。
ShunResultSetオブジェクトから1件分のデータに相当するShunRecordオブジェクトを取り出し、ShunRecordオブジェクトからXML文書を取り出します。
XML文書を取り出すには、目的に応じて以下のプロパティまたはメソッドを使用します。使用可能なプロパティおよびメソッドについては以下の表を参照してください。
プロパティ名またはメソッド名 | 機能説明 |
---|---|
Dataプロパティ | XML文書をStringオブジェクトで取り出します。 |
GetDividedDataメソッド | XML文書をStringオブジェクトの2次元配列で取り出します。 |
GetStreamメソッド | XML文書をStreamオブジェクトで取り出します。 |
備考. GetDividedDataメソッドは、検索した結果をテキスト形式で取り出す場合に有効です。
FirstPositionプロパティで先頭位置情報を取得します。
LastPositionプロパティで最終位置情報を取得します。
検索した結果をある特定の要素の値で集計して取得したい場合があります。
データの内容を集計するには、ShunSearchRequirementオブジェクトのSortExpressionプロパティを使用します。ShunSearchRequirementオブジェクトのプロパティであるリターン式に集合関数指定を指定すると、検索した結果が集計されて返却されます。集計処理では、合計値、平均値、最大値、最小値または件数を求めることができます。
条件に一致するデータの内容を集計する場合の流れについて、以下の図に示します。
図10.12 条件に一致するXML文書を連続して取得する場合の流れ
C# .NETの記述例
ShunService service = new ShunService(); service.Connect(); ShunSearchRequirement req = new ShunSearchRequirement(); (1) |
VB .NETの記述例
Dim service As New ShunService() service.Connect() Dim req As New ShunSearchRequirement() (1) |
ShunSearchRequirementオブジェクトを作成し、検索条件として以下のプロパティを設定します。集計を行う場合は、リターン式に集合関数指定を指定し、ソート式にグループキーを指定する必要があります。
リターン式および集合関数指定の詳細については、“B.4 リターン式”を参照してください。ソート式の詳細は、“B.5 ソート式”を参照してください。
プロパティ | 説明 |
---|---|
QueryExpression | 検索式を指定します。省略はできません。 |
ReturnExpression | リターン式を指定します。 |
SortExpression | ソート式を指定します。ソートしない場合は、省略します。 |
ReplyNumber | 返信開始番号を指定します。省略した場合、1が指定されます。 |
RequestCount | 返信要求件数を指定します。省略した場合、検索した結果から得られる件数はconductor用動作環境ファイルまたはdirector用動作環境ファイルのAnsMaxに設定された値となります。 |
検索式およびリターン式の詳細は、“付録B 検索式、リターン式およびソート式の書式”を参照してください。
検索は、Searchメソッドに検索条件を設定したShunSearchRequirementオブジェクトを指定し、使用します。検索した結果としてShunResultSetオブジェクトが作成されます。
ShunResultSetオブジェクトから1件分のデータに相当するShunRecordオブジェクトを取り出し、ShunRecordオブジェクトからXML文書を取り出します。
XML文書を取り出すには、目的に応じて以下のプロパティまたはメソッドを使用します。使用可能なプロパティおよびメソッドについては以下の表を参照してください。
プロパティ名またはメソッド名 | 機能説明 |
---|---|
Dataプロパティ | XML文書をStringオブジェクトで取り出します。 |
GetDividedDataメソッド | XML文書をStringオブジェクトの2次元配列で取り出します。 |
GetStreamメソッド | XML文書をStreamオブジェクトで取り出します。 |