CSVからXMLへ

以前の記事でも触れましたが、XMLは汎用的に利用されるデータ格納形式です。

アプリケーションが外部ファイルからデータを読み込みたい場合、XMLが登場する以前は、データ格納形式としてCSV(Comma Separated Value)が主に採用されてきました。

CSVは下記例のように、テキストファイルの中にデータをカンマ(,)で区切って格納します。

"0001","チョコレート",200
"0002","アイスクリーム",150
"0003","ポテトチップス",130

※文字データはダブルクォーテーションで囲み、数値データはそのまま記述する。1行が1レコード(意味のあるデータのまとまり)となる。

上記例は、商品情報をあらわすCSVデータです。各データの意味は左から順に、商品コード、商品名、価格をあらわしています。
しかしこれでは、前述したように明示的に各データが何をあらわしているかを書けばわかるかもしれませんが、初めて見る人はすぐにはわからないのではないでしょうか。

「”0001″が商品コードである」などは、データ項目を定義した人にしかわかりません。

XMLのメリット

CSVでは、各データが何をあらわしているのかが、データ項目を定義した人にしかわかりません。それに対し、XMLでは、タグでデータの意味をあらわすことができます。

例えば、下記例を見てください。

<?xml version="1.0" encoding="Shift_JIS" ?>
<商品リスト>
  <商品情報>
    <商品コード>0001</商品コード>
    <商品名>チョコレート</商品名>
    <価格>200</価格>
  </商品情報>
  <商品情報>
    <商品コード>0002</商品コード>
    <商品名>アイスクリーム</商品名>
    <価格>150</価格>
  </商品情報>
  <商品情報>
    <商品コード>0003</商品コード>
    <商品名>ポテトチップス</商品名>
    <価格>130</価格>
  </商品情報>
</商品リスト>

「<商品コード>~</商品コード>」というタグから、このデータが商品コードをあらわしていることが一目瞭然です。また、「<商品名>~</商品名>」は商品名、「<価格>~</価格>」は価格をあらわしていることがすぐにわかります。これなら、データ項目を定義した人以外でも容易に理解できるでしょう。

文字コードの指定が可能

XMLを利用する大きなメリットとして、文字コードの指定が可能な点もあげられます。

XML文書もCSVファイルも、その実体はただのテキストファイルです。ですので、簡単に読み書きでき、コンピュータ間でのデータ交換も容易です。ただ、テキストファイルであっても文字コードが異なれば、異なる環境では読み書きできません。例えば、UTF-8で作成されたCSVファイルを、Shift-JISを使用している環境で、開こうとしても、文字化けしてしまい、正しく読み込めません。

しかし、この問題もXMLを利用していれば解決してくれます。
前述したXML文書の先頭行を見てください。

<?xml version="1.0" encoding="Shift_JIS" ?>

先頭行は、言ってみれば、「XML文書の前書き」のような部分です。

「<?xml」と「?>」で囲まれた部分をXML宣言(XML declaration)と言います。
XML宣言は、XML文書本体の前に記述し、以下の内容をあらわします。

version
XML仕様バージョン
encoding
XML文書で使われている文字コード

versionには、現在、主として使われているバージョン1.0を指定します。
encodingには文字コードを指定します。指定可能なものとして下表に示した文字コードなどがあります。

文字コード 備考
UTF-8 ISO/IEC 10646 UTF-8
UTF-16 ISO/IEC 10646 UTF-16
UCS-2 ISO/IEC 10646 UCS-2
UCS-4 ISO/IEC 10646 UCS-4
ISO-8859-X ISO 8859関連の文字コード
Shift_JIS Windowsで使用される文字コード
EUC-JP UNIXで使用される文字コード

XML文書を読み込んだ側は、XML宣言の部分を参照すれば、XML文書本体が何の文字コードで作成されているかわかります。
XML文書を読み込めるアプリケーションとして、主にIEなどのWebブラウザがありますが、IEで読み込めば、そのXML文書がEUC-JPであり、かつ、システムの文字コードがShift-JISの環境であったとしても、IEが自動的に文字コード変換を行い、正常に読み込んでくれます。

まとめ

XMLは、人間にもコンピュータにも扱いやすいデータ形式であり、かつ、異なる様々な環境間、つまりインターネットの世界でデータ交換をするための十分な機能が備わっているのです。このことが、何となくでもわかりましたでしょうか。

CSVはローカルな環境で使用する分は、十分かもしれませんが、インターネットの世界まで幅を広げようとした場合は不十分であり、XMLはそれらの問題を解決するデータ形式と言えるのです。