Power Automate Desktop(PAD)には豊富なアクションが用意されていますが、個人的に気になっていたアクショングループがあります。
それは下記の「XML」アクションです。
XMLの読み込みから要素や属性の取得・削除、XPathの実行まで、XMLの操作に必要な処理は一通り備わっているようですが、PADでこれらの需要が有るのかどうかが謎だったので、実際に試してみることにしました。
テスト用XML
テストに使用するXMLは下記の通りです。
元はMicrosoft DocsにあるXMLで、一部を加工しています。
<?xml version="1.0" encoding="utf-8"?> <catalog> <book id="bk101"> <author>テスト太郎</author> <title>XML開発入門</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>XML開発入門書の定番がついに登場! この一冊さえあればXMLのすべてが分かります。</description> </book> <book id="bk102"> <author>Ralls, Kim</author> <title>Midnight Rain</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-12-16</publish_date> <description>A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.</description> </book> <book id="bk103"> <author>Corets, Eva</author> <title>Maeve Ascendant</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-11-17</publish_date> <description>After the collapse of a nanotechnology society in England, the young survivors lay the foundation for a new society.</description> </book> <book id="bk104"> <author>Corets, Eva</author> <title>Oberon's Legacy</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2001-03-10</publish_date> <description>In post-apocalypse England, the mysterious agent known only as Oberon helps to create a new life for the inhabitants of London. Sequel to Maeve Ascendant.</description> </book> <book id="bk105"> <author>Corets, Eva</author> <title>The Sundered Grail</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2001-09-10</publish_date> <description>The two daughters of Maeve, half-sisters, battle one another for control of England. Sequel to Oberon's Legacy.</description> </book> </catalog>
XMLから任意の要素の値を取得・設定するフロー
フロー全体
1. 変数の設定
テスト用XMLを変数「xml」として設定します。
2. 一時ファイルの取得
変数から読み込んだ値を直接XMLノードとして扱う方法が分からなかったため、XMLを読み込むための一時ファイルを「TempFile」として作成します。
3. テキストをファイルに書き込みます
- ファイル パス:%TempFile%
- 書き込むテキスト:%xml%
- 新しい行を追加する:オン
- ファイルが存在する場合:既存の内容を上書きする
- エンコード:UTF-8
4. ファイルから XML を読み取ります
一時ファイルを読み込み、XMLノードとして取得します。
- ファイル パス:%TempFile%
- エンコード:UTF-8
5. ファイルの削除
一時ファイルを削除します。
6. XML 要素の値を取得します
XPathで指定した要素の値を取得します。
下記ではid属性の値が「bk101」のbook要素の子要素である「description」要素を指定しています。
- XML ドキュメント:%XmlDocument%
- XPath クエリ:/catalog/book[@id="bk101"]/description
- 次として値を取得する:テキスト値
7. メッセージを表示
ちゃんと要素の値が取得できているかをメッセージボックスで確認します。
8. XML 要素の値を設定します
読み込みが確認できたら、次は値を設定します。
- XML ドキュメント:%XmlDocument%
- XPath クエリ:/catalog/book[@id="bk101"]/description
- XML 要素の値:本気でXML開発を目指す方必読!
9. XML をファイルに書き込みます
最後にXMLファイルとして出力します。
- ファイル パス:C:\Test\XMLサンプル.xml
- 書き込む XML:%XmlDocument%
- エンコード:UTF-8
- 書式設定 XML:オン
- レベルごとにインデント:2
出力したXMLファイルを開いたところ、指定した要素の値が無事に変更されていることが確認できました。
上記の通り、XML関連のアクションを使って問題無くXMLの操作ができたわけですが、これをどう有効活用すれば良いのかは悩むところです・・・。
例えばPADのフローとVBAマクロを連携する際、必要なパラメーターをPADからXMLとして書き出し、マクロ側でそれを読み込む、といった活用はできますし、もしくは、操作対象のアプリケーションがXML出力に対応しているのであれば、XMLから必要な値だけを読み込んでExcelファイルに転記する、といった活用方法も考えられます。
何れにしても使う状況は限られてしまいますが、PADにXMLを操作するためのアクションがちゃんと用意されていることだけでも覚えておくと、いつかどこかで役に立つかもしれません。
この記事へのコメントはありません。