「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

XMLパーサ

pointこの用語のポイント

pointプログラムだよ

pointXMLファイルの中身を解析するよ

point使いやすい形に整形するよ

スポンサーリンク

簡単に書くよ

XMLパーサ(読:エックスエムエルパーサ 英:XML parser)とは

パッと見でごちゃごちゃしているXMLファイル(XMLのルールに従って書かれたテキストファイル)の中身を解析して、プログラムや人間様が使いやすいように すっきりした形に整形してくれるプログラムのこと
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として

XML
XMLファイル
パース
パーサ


について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

XMLは「ファイルの書き方ルールのひとつ」です。
例えば

<?xml version="1.0" encoding="Shift_JIS" ?>
<staff>
    <member>
        <name>ピヨ太</name>
        <position>社長</position>
        <age>40代のおっさん</age>
    </member>
    <member>
        <name>ピヨ子</name>
        <position>営業部長</position>
        <age>永遠の美少女</age>
    </member>
</staff>


みたいな書き方を「XML」と言います。
詳細は、用語「XML」の説明を ご覧ください。

XMLパーサ

XMLファイルは「XMLのルールに従って書かれたテキストファイル(中身が文字だけのファイル)」です。

XMLパーサ2

「XMLのルールに従って」とか書いてあると難しそうに見えますが、恐れる必要は ありません。
中身は、ただのテキストデータ(文字データです。
その気になれば、メモ帳などのテキストエディタで中身を見たり編集したりできます。

XMLパーサ3

パースは「(構造とかを)解析すること」をカッコ付けて言った表現です。

XMLパーサ4

例えば、そうですね。

ピヨ太君がパソコンさんに「パンを買ってこい」と言いました。

XMLパーサ5

「パンを買ってこい」と言われたパソコンさんは、ピヨ太君に言われた「パンを買ってこい」を

パン:名詞【目的語】
を:助詞(格助詞)
買っ:動詞【動作】
て:助詞(接続助詞)【動作】
こい:動詞【命令】


みたいに分解して「何を言っているんだべ?こいつ」を把握しようと頑張りました。

XMLパーサ6

ふむふむ、なるほど。
どうやらピヨ太君はパンを買ってきてほしいみたいです。

XMLパーサ7

パソコンさんは「自分で行け」と返答しました。

XMLパーサ8

この話においてパソコンさんがやったのがパースです。
「パンを買ってこい」を解析していますよね。

XMLパーサ9

※「パース」という用語は美術とか建築の分野でも出てきます。美術・建築分野で出てくる「パース」は「パースペクティブ(perspective)」の略です。意味は「遠近法」とか「透視図法」とか、そんな感じです。

パーサは「(構造とかを)解析するのが仕事のやつ」です。

XMLパーサ10

パーサはプログラムだったり、プログラムに組み込まれている部品(一部)だったりします。

以上を踏まえて

XMLファイルの中身を解析して、使いやすい形に整形してくれるプログラム

が「XMLパーサ」です。

XMLパーサ11

XMLファイルの中身は、例えば以下のようになっています。

<?xml version="1.0" encoding="Shift_JIS" ?>
<staff>
    <member>
        <name>ピヨ太</name>
        <position>社長</position>
        <age>40代のおっさん</age>
    </member>
    <member>
        <name>ピヨ子</name>
        <position>営業部長</position>
        <age>永遠の美少女</age>
    </member>
</staff>


例えば

ピヨ太

という文字が

<name> ~ </name>

という目印で囲まれていますよね。

このように文字を目印で囲むことで

「ピヨ太」というのは「name(名前)」だよ

を表現しています。

これがXMLファイルの基本です。

ただし、これは あくまで人間様から見た場合の お話です。

先ほど

XMLファイルはテキストファイル(中身が文字だけのファイル)

だと書きました。

そうです。
プログラムさんにとって、XMLファイルは ただの文字の集まりです。
「『<name> ~ </name>』に囲まれているから『ピヨ太』は『name(名前)』だな」なんて考えてくれません。
そこら辺の日記とかと同じように扱います。
いくら目印で囲っても、察してくれないのです。

そのため、プログラムからXMLファイルの各項目を扱うときは

1.XMLファイルの中身を全部読み込む
2.「1」で読み込んだ内容から、目印で囲まれたところを取り出す
3.「2」で取り出した内容を使いやすい形に直す


という手順が必要になります。

まず

<?xml version="1.0" encoding="Shift_JIS" ?>
<staff>
    <member>
        <name>ピヨ太</name>
        <position>社長</position>
        <age>40代のおっさん</age>
    </member>
    <member>
        <name>ピヨ子</name>
        <position>営業部長</position>
        <age>永遠の美少女</age>
    </member>
</staff>


の全体を見渡して、そこから

<name>ピヨ太</name>

を取り出して、そこから例えば

name:ピヨ太

のような形に整形してあげるのです。

しかも「name」自体は「<staff> ~ </staff>」に囲まれている「<member> ~ </member>」に囲まれている「name」です。
「staff」の中の「member」の中の「name」と言えるでしょう。
実際には

staff→member→name:ピヨ太

のような形にしてあげる必要があります。

ここまでやって、はじめてプログラムさんが「あぁ、この項目があって、その値はこれなのね」と判別できるようになるのです。

この手順を ちまちまやってくれるプログラム(の部品)ソフトがXMLパーサです。
XMLファイルの中身を解析して、プログラムや人間様が使いやすい形に整形してくれるやつです。

XMLパーサ12

XMLパーサは、どこかの誰かが用意してくれているものを使う場合もあれば、自前で作る場合も あります。
XMLファイルを普通に扱うのであれば、すでに用意されているものを使うでしょう。
ちょっと特殊なことをやりたいときは自前で作るはずです。
いずれにせよ

1.XMLファイルの中身を解析する
2.扱いやすい形に整形する


プログラムであれば、XMLパーサと呼んで差し支えはないと思います。

以上でXMLパーサの説明は終わりですが、せっかくなので、もう少しプログラマさん向けの説明も書いておきますね。

PHPを例に説明します。
大したことは書かないので、PHPを知らなくても問題は ありません。

あなたがプログラムでデータを扱うとき

$xml = '<?xml version="1.0" encoding="Shift_JIS" ?><staff><member><name>ピヨ太</name><position>社長</position><age>40代のおっさん</age></member><member><name>ピヨ子</name><position>営業部長</position><age>永遠の美少女</age></member>';



$xml = array(
    array(
        'name' => 'ピヨ太',
        'position' => '社長',
        'age' => '40代のおっさん',
    ),
    array(
        'name' => 'ピヨ子',
        'position' => '営業部長',
        'age' => '永遠の美少女',
    )
);


では、どちらが扱いやすいでしょうか。

おそらく10人中10人が後者を選ぶはずです。

ところがですね。

XMLファイルを読み込んだ直後の状態は前者の

$xml = '<?xml version="1.0" encoding="Shift_JIS" ?><staff><member><name>ピヨ太</name><position>社長</position><age>40代のおっさん</age></member><member><name>ピヨ子</name><position>営業部長</position><age>永遠の美少女</age></member>';

になっているのです。
これを

$xml = array(
    array(
        'name' => 'ピヨ太',
        'position' => '社長',
        'age' => '40代のおっさん',
    ),
    array(
        'name' => 'ピヨ子',
        'position' => '営業部長',
        'age' => '永遠の美少女',
    )
);


に変えるお仕事をしているのがXMLパーサです。

XMLパーサに対してXMLファイルを指定すると

$xml = array(
    array(
        'name' => 'ピヨ太',
        'position' => '社長',
        'age' => '40代のおっさん',
    ),
    array(
        'name' => 'ピヨ子',
        'position' => '営業部長',
        'age' => '永遠の美少女',
    )
);


の状態でデータを取り出せると思います。

これは、まずXMLパーサさんが

$xml = '<?xml version="1.0" encoding="Shift_JIS" ?><staff><member><name>ピヨ太</name><position>社長</position><age>40代のおっさん</age></member><member><name>ピヨ子</name><position>営業部長</position><age>永遠の美少女</age></member>';

の状態でXMLファイルの中身を取り出し、その後で

$xml = array(
    array(
        'name' => 'ピヨ太',
        'position' => '社長',
        'age' => '40代のおっさん',
    ),
    array(
        'name' => 'ピヨ子',
        'position' => '営業部長',
        'age' => '永遠の美少女',
    )
);


の形に整形してくれているのです。


image piyo2

一言でまとめるよ

まぁ「XMLパーサ」って単語が出てきたら「XMLファイル(XMLのルールに従って書かれたテキストファイル)の中身を使いやすい形に整形してくれるプログラムなんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像068
書籍画像026

おまけ

■訳してみるよ

「XML」は「eXtensible Markup Language(エクステンシブル・マークアップ・ランゲージ)」の略です。
「extensible(エクステンシブル)」の意味は「広げられる」とか「伸ばせる」とかです。
今回は「拡張できる」と解釈してください。
「mark(マーク)」の意味は「印」とかです。
「up(アップ)」の意味は「上へ」とかです。
「mark up(マーク・アップ)」で「印をつける」的な意味になります。
「language(ランゲージ)」の意味は「言語」とか「言葉」とかです。
「parser(パーサ)」は「parse(パース)」+「er」です。
「parse(パース)」の意味は「構文解析する」とかです。
接尾辞「er」を付けると「~する人」とか「~するもの」的な意味になります。
何となく くっつけると

拡張できる印を付ける言語の構文を解析するやつ

となります。


■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
つくって、壊して、直して学ぶ Git&GitHub 入門
おい点P、動くんじゃねえ!──ニガテ民のための算数と数学の本