技術屋にゃん兵衛のてくてくらぼ by データウィズ [DataWith]

気の向くままソフトについて書いてます。バリバリエンジニアではないのであくまでも初心者目線で。

XMLBluePrintでXPathを使う方法

XMLBluePrintでXPathを使う方法

 

XMLBluePrintには、データの内容を確かめながらXPathの記述を確認する機能があります。

今回は、XMLのサンプルとして、PMDAに登録されている医薬品の情報を使ってみましょう。PMDAのXMLはあらかじめ定義されているスキーマに従っているので、どの医薬品の情報でも同じように扱うことができます。

※PMDA:独立行政法人医薬品医療機器総合機構

  1. ダウンロードしてきたXMLファイルをXMLBluePrintで開きます。

    PMDAからダウンロードしてきた医薬品XML

  2. 「表示」>「XPath」を選択します。


  3. 左側にXPath用パネルが開きます。

    XMLBluePrintのXPathパネル

  4. XPathとして、

    //ApprovalBrandName

    と入力すると、その下に<ApprovalBrandName>のデータが表示されます。
    「//」と入力すると、XML内で定義されているタグ一覧が見えるのでそこから選択すれば、タイポもなくなります。

    XPathで抽出されたデータ

  5. ここでXPathパネルの上のボタン、メニューを見てみます。


  6. 左の3つは、どの情報をパネル内に表示させるかです。今表示されているものは赤枠で囲まれています。


    「1x」は、該当するものが1つある、ということです。
    ちなみに左から3番目のボタンをクリックしてオフにすると、次のようになります。
  7. もう少し違うXPathを入れてみましょう。文字列を検索してみます。

    //TrademarkName[contains(text(), 'Tranexamic')]

    結果は、、、

  8. 次は、「ApprovalBrandName」のように<Lang>がその下にある場合です。つまり次のような場合。


  9. ここはXPathのパス(Path)が活きることになります。つまり、XMLのタグの再送を示せばいいわけです。
    ということで、

    //ApprovalBrandName/Lang[contains(text(), 'トラネキサム')]

    と書きます。すると正しく見えました。

     

    ただ、これだとあくまでも<Lang>の情報で、その上位の階層は検索画面で見るしかないので、ご注意を。
    XPathの記述が正しいかを見るのであればこれで十分ですが

 

ここまで、医薬品のXMLファイルを使ったのですが、XPathのテストには向いていない気がしました。というのも、ほぼどのタグも1回しか出てこないので。

なので、以前にも使った法令で試すことにしました。今回は下記からサンプルの法令データをダウンロードしました。

https://laws.e-gov.go.jp/help/#sample-data

e-GOVの法令サンプルデータ

 

「サンプル法令1」は次のようなものです。

複数の情報が返ってきてほしいので、XPathを次のようにしました。

//TableColumn

結果は、「16x」ということで16個のデータが返ってきました。

最初からこちらを使えばよかった。