【PostgreSQL】xmltableを使う。XML解析を行う方法。

記事内に広告が含まれています。

ポスグレを使っていて、XMLのパラメータが送られてくるファンクションを作ることがあり、使い方を忘れそうなので書き残しておきます

xmltableはXMLをテーブル要素に変換するときに使います

※プログラミング初心者が書いていますので、読みづらかったり、誤りがある可能性がございます。そのような点については目をつぶっていただくかコメントでご指摘いただけると幸いです

スポンサーリンク

xmltableの概要

使い方はざっと以下の通りです

xmltable(
    '名前空間'
    PASSING '解析するXMLデータ'
    COLUMNS カラム名 データ型 PATH 'XMLのタグ名'
)

基本的にはこのような形で使います

ただ、これだとわかりづらいと思うので、実際にデータを入れて動かしたものも紹介します

xmltable使用例

テーブル要素としてFROMの中に入れてSELECTしてみます

SELECT
    *
FROM
    xmltable(
        '//Food/Vegetable'
	PASSING '
	    <Food>
	        <Vegetable>
	            <Name>きゅうり</Name>
	            <EnglishName>Cucumber</EnglishName>
		    <Calorie>14</Calorie>
		    <Price>55</Price>
		</Vegetable>
		<Vegetable>
		    <Name>たまねぎ</Name>
		    <EnglishName>Onion</EnglishName>
		    <Calorie>37</Calorie>
		    <Price>70</Price>
		</Vegetable>
		<Vegetable>
		    <Name>じゃがいも</Name>
		    <EnglishName>Potato</EnglishName>
		    <Calorie>76</Calorie>
		    <Price>50</Price>
		</Vegetable>
	    </Food>'
	COLUMNS
	    name character varying PATH 'Name',
	    e_name character varying PATH 'EnglishName',
	    calorie integer PATH 'Calorie',
	    price integer PATH 'Price'
	)
;

XMLが長いので見にくいですかね…?

結果は以下のようになります

name e_name calorie price
きゅうり Cucumber1455
たまねぎOnion 3770
じゃがいもPotato 7650

XMLの内容をテーブル要素として取得することができました

スポンサーリンク

参考

コメント