XML パッケージでのアクションの使用例

XML パッケージを使用して、XML ファイルから Excel シートにデータを読み込み/書き込みする Bot を作成します。

このチュートリアルで使用する XML のサンプルの構造は次のとおりです。
<movies>
    <movie genre="" year="">
        <name></name>
        <description></description>
        <director></director>
        <writers>
            <writer type=""></writer>
            <writer type=""></writer>
        </writers>
        <rating>R</rating>
    </movie>
</movies>

開始する前に、XML のサンプル ファイルをダウンロードしてください。

このチュートリアルは、次のアクションの実行することを意図しています。
  • XPath 式を使用して、特定の値を持つノード セットを取得し、ノード セット内の項目 (このチュートリアルで特定の評価を持つムービーなど) を反復処理します。
  • XPath 関数を使用して、子ノード セットを反復処理します。
  • 変数を連結して文字列を作成します。
  • Excel シートにデータを書き込みます。

前提条件

以下を確認してください。

  • Bot の作成方法を理解している。
  • Control Room のユーザー インターフェースに精通している。

手順

  1. Bot を作成して、XMLDataReader という名前を付けます。
  2. ステップを追加して、Excel シートを開くためのすべてのタスクをグループ化します。
    1. Bot エディターでフローを開始してから、[ステップ] > [ステップ] アクションを追加します。
      注: アクションを追加するには、[アクション] ペインでアクションを検索し、Bot エディターBot フローにドラッグします。
    2. [タイトル] で、Open an Excel Sheet を入力し、アクションを保存します。
  3. Excel シートを作成して開くには、[Excel の高度な操作] > [ブックを作成] を使用します。
    1. [ステップ] アクション内に [Excel の高度な操作] > [ブックを作成] アクションを追加します。
    2. [ファイルパス] に、C:\movies\movies.xlsx と入力し、アクションを保存します。指定したパスに movies フォルダーが存在しない場合、パスに [movies] フォルダーを作成します。
  4. Excel シートの最初のセルを選択するには、[Excel の高度な操作] > [セルに移動] アクション を使用します。
    1. [Excel の高度な操作] > [セルに移動] アクションを [Excel の高度な操作: ブックを作成] アクションの後に追加します。
    2. [セルの指定] をクリックして (まだ選択されていない場合)、A1 と入力します。
    3. アクションを保存します。
  5. 別のステップを作成して、XML データを取得するすべてのタスクをグループ化します。
    1. 最初の [ステップ] アクションの後に、[ステップ] > [ステップ] アクションを追加します。
    2. [タイトル] で、Get XML Data を入力し、アクションを保存します。
  6. XML セッションを開始します。
    1. [XML データの取得] ステップ内に、[XML] > [セッションを開始] アクションを追加します。
    2. [ファイル] で、[デスクトップ] を選択し、ダウンロードしたサンプル XML ファイルを参照して選択します。
    3. 変更を保存します。
  7. R 評価のすべてのムービー ノードを取得するには、[複数ノードを取得] アクションを使用します。
    1. [セッションを開始] の後に、[XML] > [複数ノードを取得] アクションを追加します。
    2. [XPath 式] で、//movie[rating/text()='R'] と入力し、アクションを保存します。
      選択したノード セットはシステム変数に格納され、[XML Dataset の各ノードに対して] 反復子を使用できるようになりました。
    3. アクションがテキスト ノードだけでなくノード セット全体を取得するようにするには、[XPath 式] をクリックします。
  8. [ループ] アクションを使用して、[複数のノードを取得] アクションを取得するために選択したノード セットを反復処理します。
    1. [ループ] > [ループ] を [XML: 複数ノードを取得] アクションの後に追加します。
    2. [反復子] で、反復子として、[XML] > [XML Dataset の各ノードに対して] を選択します。
    3. [この変数に現在の行を代入] で、[(x)] をクリックし、デフォルト名 (XMLNode など) を持つ変数を作成します。これで、ノード セット内の各項目が変数から使用できるようになります。
    4. アクション を保存します。
  9. 反復ノードからムービー名を取得するには、[1 つのノードを取得] アクションを使用します。
    1. [XML] > [1 つのノードを取得] アクションを [ループ: ループ] アクション内に追加します。
    2. [XPath 式] に、$XMLNode$/name と入力します。
    3. [出力を変数に代入] で、変数を作成し、sMovieName という名前を付けます。
    4. アクション を保存します。
  10. XMLNode 変数からムービー名を書き込むには、[セルを設定] アクションを使用します。
    1. [1 つのノードを取得] アクションの後に、[Excel の高度な操作] > [セルを設定] アクションを追加します。
    2. [アクティブなセル] をクリックし、[セルの値] に $sMovieName$ と入力して、アクションを保存します。
  11. Excel シート内の新しいセルを選択するには、[セルに移動] アクションを使用します。
    1. [セルに移動] アクションを [セルを設定] アクションの後にある [Excel の高度な操作: セルを設定] アクションの後に追加します。
    2. [アクティブなセル] をクリックし、[1 つ右のセル] を選択してアクションを保存します。
  12. 反復ノードからディレクトリ名を取得するには、[1 つのノードを取得] アクションを使用します。
    1. [XML] > [1 つのノードを取得] アクション を [Excel の高度な操作: セルに移動] アクションの後に追加します。
    2. [XPath 式] に、$XMLNode$/director と入力します。
    3. [出力を変数に代入] で、sDirector という名前の変数を作成します
    4. アクション を保存します。
  13. XMLNode 変数からディレクター名を書き込むには、[セルを設定] アクションを使用します。
    1. [Excel の高度な操作] > [セルを設定] アクションを [XML: 1 つのノードを取得] アクションの後に追加します。
    2. [アクティブなセル] をクリックし、[セルの値] に $sDirector$ と入力して、アクションを保存します。
  14. Excel シート内の新しいセルを選択するには、[セルに移動] アクションを使用します。
    1. [セルに移動] アクションを [Excel の高度な操作: セルを設定] アクションの後に追加します。
    2. [アクティブなセル] をクリックし、[1 つ右のセル] を選択してアクションを保存します。
  15. なぜなら<writers>ノードには複数の<writer>ノードを含めることができるため、各ライター名を取得し、名前を結合します。これらの名前は、複数のセルに値を書き込む代わりに、1 つのセルに書き込むことができます。これを実行するには、現在の [ループ] アクション内に、[ループ] アクションを追加します。
    1. を取得すること。<writer>ノードの番号を<writers>ノード内で取得するには、[XML] > [XPath 機能を実行] を [Excel の高度な操作: セルを設定] アクションの後に追加します。[XPath 式] に、count($XMLNode$/writers/writer) と入力します。[出力を変数に代入] で、sWriterCount という名前の変数を作成します。
      を使用することになります。<writer>ノード カウントを使用して、すべての<writer>ノードをループさせます。
    2. [ループ] > [ループ] アクションを [XML: XPath 機能を実行] アクションの後に追加します。
      重要: 2 番目の [ループ] アクションはメイン [ループ] アクション内に追加する必要があります。
    3. [反復子] で、反復子として、[n 回] を選択します。
    4. [回数] に、$sWriterCount.String:toNumber$ と入力します。
      注: sWriterCount には、文字列値が含まれます。文字列を数値に変換するには、
      lt;variable name>.String:toNumber$ フォーマットを使用します (例: $sWriterCount.String:toNumber$)。
    5. [現在の値を変数に代入 (オプション)] で、Counter という名前の変数を作成します。
    6. アクション を保存します。
  16. すべての「writer」ノードの値を連結するには、文字列変数を作成します。
    1. [変数] ペインで、プラス アイコンをクリックします。
      [変数を作成] ウィンドウが開きます。
    2. [タイプ] で、[文字列] を選択します。
    3. [名前] に、sWriters と入力します。
    4. [作成] をクリックします。
  17. 反復処理<writer>ノードから値を取得するには、[1 つのノードを取得] アクション を使用します。
    1. 2 番目の [ループ] アクション 内に [XML] > [1 つのノードを取得] アクションを追加します。
    2. [XPath 式] に、$XMLNode$/writers/writer[$Counter.Number:toString$] と入力します。
      Counter 変数を使用すると、特定のインデックスのノードにアクセスできます。Counter 変数には数値が含まれているため、.Number:toString$ 式が Counter 変数に追加され、文字列に変換されることに注意してください。
    3. [出力を変数に代入] で、変数を作成し、sWriter という名前を付けます。
    4. アクション を保存します。
  18. 「writer」ノードから値を割り当てるには、[文字列] > [代入] アクション を使用します。
    1. [文字列] > [代入] アクション を 2 番目のループ内の [XML: 1 つのノードを取得] の後に追加します。
    2. [元の文字列変数/値を選択 (オプション)] に、$sWriters$, $sWriter$ と入力します。
    3. [ターゲットの文字列変数を選択] で、sWriters を選択します。
    4. アクション を保存します。
    内部ループが完了すると、sWriters 変数にはすべてのライター名が含まれます。
  19. ライター名を新しいセルに書き込むには、メイン ループ内の [Excel の高度な操作] > [セルを設定] アクションを使用します。
    1. 最初の [Loop] アクション内の内部 [ループ] アクションの後に、[Excel の高度な操作] > [セルを設定] アクションを追加します。
    2. [アクティブなセル] をクリックします。
    3. [セル値] に、$sWriters$ と入力します。
    4. アクション を保存します。
    1 つの<movie>ノードから取得されたデータは、行に書き込まれます。次の<movie>ノードからデータを書き込むには、Excel シートで次の行を選択する必要があります。
  20. 次の行にカーソルを移動するには、[Excel の高度な操作] > [セルに移動] アクション を使用します。
    1. [セルに移動] アクションを [セルを設定] アクションの後に追加します。
    2. [アクティブなセル] をクリックして、[行の先頭] を選択し、アクションを保存します。
    3. [セルに移動] アクションを再度追加します。[アクティブなセル] をクリックして、[1 つ下のセル] を選択し、アクションを保存します。
  21. 取得した<movie>ノード セットの次のノードが反復処理される前に、sWriters 変数をリセットする必要があります。sWriters 変数をリセットするには、次の手順を実行します。
    1. [文字列] > [代入] アクションをメイン ループ内の [Excel の高度な操作: セルに移動] の後に追加します。
    2. [元の文字列変数/値を選択 (オプション)] を空白のままにします。
    3. [ターゲットの文字列変数を選択] で、sWriters を選択します。
    4. アクション を保存します。
  22. 新規ステップを作成します。
    1. 2 番目の [ステップ] アクションの後に、[ステップ] > [ステップ] アクションを追加しますアクション。
    2. [タイトル] に、Close the file と入力します。
  23. Excel シートを閉じるには、[Excel の高度な操作][閉じる] アクションを使用します。
    1. [ファイルを閉じる] ステップ内に [Excel の高度な操作] > [閉じる] を追加します。
    2. 変更を保存します。
  24. Bot を実行します。