ダイレクトアクセスキーを使用してデータを検索する場合のC++ .NETの使用例を示します。
検索するデータ
<course> <id>0001</id> <name>Business negotiation</name> <instructor> <first-name>Max</first-name> <last-name>cameron</last-name> </instructor> <capacity>40</capacity> <current-auditors>30</current-auditors> </course> |
定義したダイレクトアクセスキー
key /course/id/text()
APIの使用例
以下にC++ .NETを使用したプログラミング例を示します。
#using <mscorlib.dll> #using <system.dll> #using <Fujitsu.Shunsaku.dll> using namespace System; using namespace Fujitsu::Shunsaku; class SampleDirectAccessSearch { public: static void Main( String *args __gc[] ) { ShunService *service = 0; try { // ShunService の作成 service = new ShunService(); // ホスト名 ポート番号を指定して Shunsaku に接続 service->Host = "DirSvr1"; service->Port = 23101; service->ShunsakuFile = "shunsakuFile1"; service->Connect(); // 検索用の ShunKeyRequirement オブジェクトを作成 ShunKeyRequirement *keyReq = new ShunKeyRequirement(); keyReq->KeyName = "key"; // 検索対象のキーを追加 keyReq->Records->Add( new ShunRecord() ); keyReq->Records->get_Item( 0 )->Key = "0001"; // 検索条件を指定して検索を実行 ShunResultSet *rs = service->SearchByKey( keyReq, "/" ); // 取得したソース情報のダイレクトアクセスキーを取得 Console::WriteLine( "ヒット件数 = {0}", __box( rs->HitCount ) ); int i = 0; ShunRecordEnumerator *enumerator = rs->Records->GetEnumerator(); while ( enumerator->MoveNext() ) { ShunRecord *record = enumerator->Current; ++i; Console::WriteLine( "[結果]{0}件目", __box( i ) ); Console::WriteLine( "ダイレクトアクセスキー: {0}", record->Key ); Console::WriteLine( "データ :" ); Console::WriteLine( record->Data ); } // Shunsaku から切断 service->Disconnect(); } catch ( ShunContinuousException *e ) { // ShunContinuousExceptionが発生した場合の処理を記述 try { if( service != 0 && service->State == ShunConnectionState::Open ) { service->Disconnect(); } } catch ( ShunException *ex ) { Console::WriteLine( "エラーメッセージ : {0}", ex->Message ); } Console::WriteLine( "エラーメッセージ : {0}", e->Message ); } catch ( ShunConnectionTerminatedException *e ) { // ShunConnectionTerminatedExceptionが発生した場合の処理を記述 Console::WriteLine( "エラーメッセージ : {0}", e->Message ); } } }; int main() { return SampleDirectAccessSearch::Main( Environment::GetCommandLineArgs() ); } |
実行結果
ヒット件数 = 1 [結果]1件目 ダイレクトアクセスキー:0001 データ : <course> <id>0001</id> <name>Business negotiation</name> <instructor> <first-name>Max</first-name> <last-name>cameron</last-name> </instructor> <capacity>40</capacity> <current-auditors>30</current-auditors> </course> |