shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Power Automate】XMLの値を取得するサンプル(Xpath式の実行と要素の値取得)

Power Automate Desktopには、XML 属性と要素を取得、管理する機能があります。その取得事例として、【Power Query】エクセルで複数のXML形式のデータをインポートして整理と同じサンプルファイルで、XMLの値を取得してみました。

使用のツールは「Power Automate Desktop」(version 2.39.306.23341)です。

内容:

事例の前提

XMLファイルのデータサンプルは、前述の以下で利用した、基本3情報ダウンロード|国税庁法人番号公表サイトで公開されているデータです(ダウンロードファイル内にある「05_Web-API機能(Ver.4.0)\03_取得期間指定」)。

shikumika.org

手順

全体像

事例で説明するPower Automate Desktopのフローの全体像は次の3ステップです。

  1. ファイルからXMLを読み取る
  2. Xpath式を実行します
  3. XML要素の値を取得

ファイルからXMLを読み取る、Xpath式の実行、XML要素の値を取得の3ステップ

フローの全体像

1.ファイルからXMLを読み取る

画面左側のアクションメニューのXMLのグループから、「ファイルからXMLを読み取る」を選択し、XML形式のファイルを指定します。

事例では、前述サンプルにある「diff_20170509_ver4_x4.xml」を指定しています(ページ下部の補足説明で、中略したサンプルを記載しています)。

 

参考情報:

XML を使用したアクションについての参考情報 - Power Automate | Microsoft Learn

2.Xpath式を実行します

Xpath式を実行する事例のため、要素の値を取得したい場合は、不要のアクションです。「3.XML要素の値を取得」のみ実施します。

アクションから「Xpath式を実行します」を選択し、Xpath クエリ等を設定します。

事例の設定画面は次のとおりです。

解析するXMLドキュメントと、Xpathクエリを指定

「Xpath式を実行します」の設定例

解析するXMLドキュメントは、「1.ファイルからXMLを読み取る」で生成された変数を設定しています。

Xpath クエリに一致した最初の値のみ取得する場合は、「最初の値のみ取得します」を有効にします。

 

なお、このフローを実行すると、生成された変数 XPathResults に次のとおり値が取得されていました。変数に、リストXMLノードが代入されています。

変数に、リストXMLノードがリストとして代入

「Xpath式を実行します」の実行結果

3.XML要素の値を取得

アクションから「XML 要素の値を取得」を選択し、Xpath クエリ等を設定します。

事例の設定画面は次のとおりです。

XMLドキュメント、Xpathクエリ等を設定します

「Xpath式を実行します」の設定例

XMLドキュメント、Xpathクエリを「2.Xpath式を実行します」と同様に設定します。

このフローを実行すると、生成された変数 XmlElementValue に次のとおり該当のテキスト値が取得されていました。

テキスト値で値が取得される

「XML要素の値を取得」の実行結果

補足説明

Xpath クエリに一致するデータが複数ある場合、「2.Xpath式を実行します」には、「最初の値のみ取得します」という設定がありますが、「3.XML要素の値を取得」にはなく、一致した最初の値を取得するのみです。


今回の事例に使用したXMLファイルの中身(一例)は、次のようなデータです(中略しています)。

<?xml version="1.0" encoding="UTF-8"?>
<corporations>
    <lastUpdateDate>2017-05-09</lastUpdateDate>
    <count>44</count>
    <divideNumber>1</divideNumber>
    <divideSize>1</divideSize>
    <corporation>
        <sequenceNumber>1</sequenceNumber>
        <corporateNumber>1020001005004</corporateNumber>
        <process>12</process>
        <correct>0</correct>
        <updateDate>2017-05-09</updateDate>
        <changeDate>2017-05-09</changeDate>
        <name>株式会社日本語所在地変更</name>
        <nameImageId />
        <kind>301</kind>
        <prefectureName>山梨県</prefectureName>
        <cityName>甲府市</cityName>
        <streetNumber>丸の内1丁目6-1</streetNumber>
        <addressImageId />
        <prefectureCode>19</prefectureCode>
        <cityCode>201</cityCode>
        <postCode>4000031</postCode>
        <addressOutside />
        <addressOutsideImageId />
        <closeDate />
        <closeCause />
        <successorCorporateNumber />
        <changeCause />
        <assignmentDate>2015-10-05</assignmentDate>
        <latest>1</latest>
        <enName />
        <enPrefectureName />
        <enCityName />
        <enAddressOutside />
        <furigana />
        <hihyoji>0</hihyoji>
    </corporation>
    <corporation>
        <sequenceNumber>2</sequenceNumber>
        <corporateNumber>1140001999034</corporateNumber>
     (中略) 
        <enAddressOutside />
        <furigana />
        <hihyoji>0</hihyoji>
    </corporation>
  (中略) 
    <corporation>
        <sequenceNumber>44</sequenceNumber>
        <corporateNumber>9700150000051</corporateNumber>
     (中略) 
        <enAddressOutside />
        <furigana />
        <hihyoji>0</hihyoji>
    </corporation>
</corporations>

 

以上、Power Automate Desktopで、XMLの値を取得するサンプル(Xpath式の実行と要素の値取得)でした。