FILTERXML関数で使える基礎的なXPathの構文

FILTERXML関数で使える基礎的なXPathの構文

ExcelのFILTERXML関数は、XML文字列から特定の情報を抽出する際に非常に便利な関数です。この記事では、FILTERXML関数で使用できる基礎的なXPathの構文について詳しく解説します。

「/」: ルートからの相対パス

この構文は、XMLのルート(一番外側・上側の要素)から指定したパスにある要素やノードに直接アクセスするためのものです。

<data>
  <item>りんご</item>
  <item>ばなな</item>
</data>

セルA1へ入力した上記のXMLデータに対して、

=FILTERXML(A1, "/data/item")

という関数を使用すると、「りんご,ばなな」が返されます。ただしExcel 2019以前のバージョンでは先頭のアイテムしか返りません。

「//」: どこかに存在するノードを表す

この構文は、XMLドキュメントのどこかに存在する特定のノードや要素を選択する際に使用します。

<data>
  <fruits>
    <item>みかん</item>
  </fruits>
  <vegetables>
    <item>にんじん</item>
  </vegetables>
</data>

セルA1へ入力した上記のXMLデータに対して、

=FILTERXML(A1, "//item")

という関数を使用すると、「みかん,にんじん」が返されます。ただしExcel 2019以前のバージョンでは先頭のアイテムしか返りません。

「@」: 属性を表す

この構文は、XMLの要素に付与された属性を指定してその値を取得する際に使用します。

<data>
  <item type="果物">さくらんぼ</item>
  <item type="野菜">きゅうり</item>
</data>

セルA1へ入力した上記のXMLデータに対して、

=FILTERXML(A1, "//item/@type")

という関数を使用すると、「果物,野菜」が返されます。ただしExcel 2019以前のバージョンでは先頭のアイテムしか返りません。

「[数値]」: インデックスを指定する

この構文は、特定の位置のノードや要素を選択するためのものです。XPathのインデックスは1から開始する点に注意が必要です。

<data>
  <item>メロン</item>
  <item>ブドウ</item>
  <item>もも</item>
</data>

セルA1へ入力した上記のXMLデータに対して、

=FILTERXML(A1, "/data/item[2]")

という関数を使用すると、「ブドウ」が返されます。

以上、FILTERXML関数で使用できる基礎的なXPathの構文についての解説でした。この知識を活用して、ExcelでのXMLデータの操作をよりスムーズに行いましょう。

コメント