ホーム > ブログ > タグ : XML

PEARのXML_Unserializerを使うと楽です。

適当なxmlファイル(wine.xml)があったとします。

wine.xml

<?xml version="1.0" encoding="utf-8" ?>
<wine>
	<item>
		<rank>1</rank>
		<country>フランス</country>
		<amount>5,329,449</amount>
	</item>
	<item>
		<rank>2</rank>
		<country>イタリア</country>
		<amount>5,056,648</amount>
	</item>
	<item>
		<rank>3</rank>
		<country>スペイン</country>
		<amount>3,934,140</amount>
	</item>
</wine>

phpコードです。

sample.php
<?php
require_once 'XML/Unserializer.php';
$Unserializer=new XML_Unserializer();
$Unserializer->setOption('parseAttributes',TRUE);

if($status=$Unserializer->unserialize(file_get_contents('wine.xml'))){
 $result=$Unserializer->getUnserializedData();

 echo '<pre>';
 print_r($result);
 echo '</pre>';
}
?>

出力結果:
Array
(
    [item] => Array
        (
            [0] => Array
                (
                    [rank] => 1
                    [country] => フランス
                    [amount] => 5,329,449
                )
            [1] => Array
                (
                    [rank] => 2
                    [country] => イタリア
                    [amount] => 5,056,648
                )
            [2] => Array
                (
                    [rank] => 3
                    [country] => スペイン
                    [amount] => 3,934,140
                )
        )

)

連想配列化されてます。

2009年03月28日

JQuery + xml

JQueryでxmlを扱ってみる。

1.まずはxmlファイルを作成。
wine.xml

<?xml version="1.0" encoding="UTF-8" ?>
<wine>
	<item>
		<rank>1</rank>
		<country>フランス</country>
		<amount>5,329,449</amount>
	</item>
	<item>
		<rank>2</rank>
		<country>イタリア</country>
		<amount>5,056,648</amount>
	</item>
	<item>
		<rank>3</rank>
		<country>スペイン</country>
		<amount>3,934,140</amount>
	</item>
</wine>

2.wine.xmlを読み込んで表示してみる。
hoge.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JQuery + xml</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
// xmlファイル読み込み
function get_wine_xml(){
    $.ajax({
        url:'wine.xml',
        type:'get',
        dataType:'xml',
        timeout:1000,
        success:parse_xml
    });
}

// xmlデータ解析
function parse_xml(xml,status){
    if(status!='success')return;
    $(xml).find('item').each(write_row);
}

// 1件分のデータをtable要素に追加
function write_row(){
    var rank=$(this).find('rank').text();
    var country=$(this).find('country').text();
    var amount=$(this).find('amount').text();
    $('<tr>'+
    '<td>'+rank+'</td>'+
    '<td>'+country+'</td>'+
    '<td>'+amount+'</td>'+
    '</tr>').appendTo('table#wine_tbl');
}
</script>
</head>
<body onload="get_wine_xml()">
    <h1>国別のワイン生産量 2005年</h1>
    <table border="1" cellspacing="0" cellpadding="0" id="wine_tbl">
        <tr>
            <td>順位</td>
            <td>国</td>
            <td>生産量(トン)</td>
        </tr>
    </table>
</body>
</html>

出力結果:
順位   国         生産量(トン)
1      フランス   5,329,449
2      イタリア   5,056,648
3      スペイン  3,934,140

簡単でしょ。

jqueryといいprototype.jsといいjavascriptはライブラリ群が充実してきてますね。