自転車旅行とWebサービス -10ページ目

自転車旅行とWebサービス

しがないSEが自転車旅行にかまけながら自前Webサービス作成を目指す


各種設定ファイルの話である。
VBの.iniファイルみたいに垂れ流し書き方式はさすがに古いので、
XMLに設定を書く・・・・

こんなふうに↓

<?xml version="1.0" encoding="UTF-8"?>
<DCMN>
  <DataBase>
    <DataSource>DBI:mysql:sato:127.0.0.1:3306</DataSource>
    <DataBase>sato</DataBase>
    <Pass>sato</Pass>
  </DataBase>
</DCMN>



そしてこれに対して今後読み書きをする。
これにより、ようやくソースにパスワード直書きという事態から逃れられる。


問題はその方法である。
一般的(俺調べ)な方法は二通り。

DOMとSAXがそれ。

 

まずDOMによる方法とはなにか?


DocumentObjectModelとかいう名前が指す通り、オブジェクトに起こすのである。

 擬音で表すと「ドン!」または「ドーン!!」である。

Xmlの構造をほぼそのまま構造体としてインスタンス化するのだ。
一度インスタンス化してしまえば、それ以降はファイルとアクセスせずに何度でもデータの取得が可能。


ただし、IBM大先生によるとメモリに展開した時に元のファイルサイズのだいたい10倍に膨れ上がってしまうという。
また一度ファイルを読み込んでから展開するので当然のように初動が遅い。 (※phpは逆)

 


続いてSAXによる方法とはなにか?

何というか、逐次読み込みのような感じ

 擬音で表すと「スッスッ!パッ!」または「サッサッ!パッ!」である。


Xmlの文書を上から読み込んでいくが、読み込みながらイベントを起動する。
そして解析終了したところからメモリを解放していくので、軽い。


読み込みながら、要素に当たるとStart_element・End_elementやcharacterといったメソッドが起動され、
現在解析中の要素を吐き出す


・・・・吐き出しはするが、そこから先、
目的の情報を拾うには先のメソッドをオーバーライドして自分でプログラムを書かなければならない。


つまり、Xmlの内容の垂れ流しである。
大量の不要な情報を捨てるプログラムを考えなければならない。


また、メモリをすぐに解放してしまい情報を保持しないため、もう一回情報が欲しいと思ったら
最初からXmlファイル読み直しになるので複数の情報の取得にはあまり向かない。


扱いづらいが軽いので、SAXを標準装備しているレンタルサーバーとかあるらしい。

 




で、どちらを選ぶって言ったらそりゃあ軽いSAXになるけど、
やりだしたら本気で色々悩み出してしまったのでやっぱやめ。


というわけで、いったんはDOM方式でやる。
でもいつかはSAXにしたいので、すぐに変えられるようなAPIを意識したコーディングを行うとする。



そう決めてつづく