Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 -
目次 索引 前ページ次ページ

第2部 APIでのアプリケーション開発> 第10章 .NET APIのアプリケーション開発> 10.3 .NET APIの使用方法> 10.3.2 データの検索

10.3.2.7 条件に一致するXML文書を連続して取得する

Webアプリケーションでは、検索した結果を一定件数ごとに区切って、前後に連続したデータを取得したい場合があります。

このような場合、ShunSearchRequirementオブジェクトのPositionプロパティに、その直前の検索処理によって取得した最終位置情報、または、先頭位置情報を指定してXML文書を連続して取得します。

条件に一致するXML文書を連続して取得する場合の流れについて、以下の図に示します。

[図: 条件に一致する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;

// 先頭位置情報
ShunPosition firstPosition = null;
// 最終位置情報
ShunPosition lastPosition = null;

// どのページを表示するかによってpositionの設定を変更
// 次のページを表示する場合は directionがNEXT、前のページを表示する場合は directionがPREVとする
switch ( direction ) {
case NEXT:
  // 次のページを表示する場合                                                           (2)
  req.Position = lastPosition;
  break;

case PREV:
  // 前のページを表示する場合                                                           (3)
  req.Position = firstPosition;
  break;

default:
  // 最初のページを表示する場合                                                         (1)
  req.Position = null;
  break;
}

ShunResultSet rs = service.Search( req );                                             (4)
Console.WriteLine ( "[ヒット件数] = {0}", rs.HitCount );
int i = 0;
foreach ( ShunRecord record in rs.Records ) {                                         (5)
  ++i;
  Console.WriteLine( "[結果] {0}件目 = {1}", i, record.Data );                         (5)
}

// 先頭位置情報と最終位置情報を格納
firstPosition = rs.FirstPosition;                                                     (6)
lastPosition = rs.LastPosition;                                                       (6)

service.Disconnect();

■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

' 先頭位置情報
Dim firstPosition As ShunPosition =  Nothing
' 最終位置情報
Dim lastPosition As ShunPosition =  Nothing

' どのページを表示するかによってpositionの設定を変更
' 次のページを表示する場合は directionがNEXT、前のページを表示する場合は directionがPREVとする
Select Case  direction
Case NEXT
  ' 次のページを表示する場合                                                            (2)
  req.Position = lastPosition

Case PREV
  ' 前のページを表示する場合                                                            (3)
  req.Position = firstPosition

Case Else
  ' 最初のページを表示する場合                                                           (1)
  req.Position = Nothing

End Select

Dim rs As ShunResultSet = service.Search(req)                                         (4)
Console.WriteLine( "[ヒット件数] = {0}", rs.HitCount )
Dim i As Integer =  0 
For Each record As ShunRecord In rs.Records                                           (5)
  i += 1
  Console.WriteLine( "[結果] {0}件目 = {1}", i, record.Data )                          (5)
Next

' 先頭位置情報と最終位置情報を格納
firstPosition = rs.FirstPosition                                                      (6)
lastPosition = rs.LastPosition                                                        (6)

service.Disconnect()

◆(1) 最初のページを表示する場合

Positionプロパティにデータの取得位置を指定します。最初のページを表示する検索処理では、最初のデータから取り出しを行うため、データの取得位置(取得開始位置または取得終了位置)にはnullを指定します。取得位置にnullを指定すると、1件目からデータを取り出します。

◆(2) 次のページを表示する場合

Positionプロパティにデータの取得位置を指定します。次のページを表示する検索処理では、前回検索時の最終位置情報をLastPositionプロパティで取得しておき、データの取得位置(取得開始位置)に指定します。この指定により前回取得したデータの続きのデータを取得します。

◆(3) 前のページを表示する場合

Positionプロパティにデータの取得位置を指定します。前のページを表示する検索処理では、前回検索時の先頭位置情報をFirstPositionプロパティで取得しておき、データの取得位置(取得終了位置)に指定します。この指定により前回取得したデータの前の部分のデータを取得します。

◆(4) 検索の実行

検索は、Searchメソッドに検索条件を設定したShunSearchRequirementオブジェクトを指定し、使用します。検索した結果としてShunResultSetオブジェクトが作成されます。

◆ (5) 検索した結果の取出し

ShunResultSetオブジェクトから1件分のデータに相当するShunRecordオブジェクトを取り出し、ShunRecordオブジェクトからXML文書を取り出します。

XML文書を取り出すには、目的に応じて以下のプロパティまたはメソッドを使用します。使用可能なプロパティおよびメソッドについては以下の表を参照してください。

[表: XML文書を取り出す場合に使用可能なプロパティおよびメソッド]

プロパティ名またはメソッド名

機能説明

Dataプロパティ

XML文書をStringオブジェクトで取り出します。

GetDividedDataメソッド

XML文書をStringオブジェクトの2次元配列で取り出します。

GetStreamメソッド

XML文書をStreamオブジェクトで取り出します。

備考. GetDividedDataメソッドは、検索した結果をテキスト形式で取り出す場合に有効です。

◆(6) 先頭位置情報と最終位置情報を格納

FirstPositionプロパティで先頭位置情報を取得します。

LastPositionプロパティで最終位置情報を取得します。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006