🛝

Power Automate Desktop で XML - XPath 式

2024/07/17に公開

XPath 式

前回 PAD の XML アクションを使いましたが、ファイルを読み込んで要素を追加しただけでした。
Power Automate Desktop で XML ファイルの編集

定義を重複して作成しないようにする必要があるけどやり方がわからなかったので、じゃあフォルダーが存在していたら定義も作成済みでいいよね。みたいな。よくないんですけど。

今回は改良します。すでに定義が存在しているか確認して、あったらスキップ。なかったら追加するようにしたいと思います。


XML ドキュメントに特定の要素があるか調べるには、XPath クエリを書く必要があります。
でも一つ問題がありまして…………XPath わからん。

Xpath の記法は以下が参考になりました。ありがとうございました!
https://zenn.dev/yu_no/articles/a73a21522b1d41


クエリ

書いた。

XPath クエリ
//Strategy[contains(Regex, "%タイトル%")]

もうちょっと説明します。
クエリを実行するドキュメントは、以下のようになっています。

定義ファイル
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Strategies>
  <Strategy name="">
    <Regex></Regex>
    <DestDir></DestDir>
  </Strategy>
  <Strategy name="">
    <Regex></Regex>
    <DestDir></DestDir>
  </Strategy>
  <Strategy name="">
    <Regex></Regex>
    <DestDir></DestDir>
  </Strategy>
</Strategies>

Regexの値を調べて、%タイトル%の要素があるかどうか知りたい。

XPath 式を実行する

実行するとこんな感じで戻ってきます。

あり。
XMLNode

なし。
blank

条件分岐に%XPathResult%空ではないで試したところ、空のときでもTrueになってしまいました。空白ではないも同じ。
If 1

先頭が<で始まっていたら。という指定にしたらうまくいきました。
If 2

こうなった。


続き。
https://zenn.dev/pfirsich/articles/fa4d66618622f0


https://learn.microsoft.com/ja-jp/power-automate/desktop-flows/actions-reference/xml

Discussion