モンスターカレンダー

« 2004年8月 »
12345678910111213141516171819202122232425262728293031

2004年8月 5日アーカイブ

php:xmllibを使ってみる

| コメント(0)

とあるxmlデータを加工する。
xmlデータは、htmlのタグを用いて書かれたテーブルである。widthなどの属性をタグに付加する。

--------------------------------------------------------------------------------

1.最終目標html [→見る]



















あか りんご いちご ピクミン
きいろ バナナ レモン ゴールデンキウイ ピクミン
みどり きゅうり きゃべつ キウイ
むらさき ナス ピクミン

2.XML

xmltest.xml



 
  
  
 
 
  
  
 
 
  
  

 
 
  
  
 
あかりんご いちご ピクミン
きいろバナナ レモン ゴールデンキウイ ピクミン
きゅうり きゃべつ キウイ
むらさきナス ピクミン

(注:見やすいようにインデントしていますが、実際はインデントも改行もしていません。XMLでは空白や改行もノードとみなす。ここでは処理を単純化するためそれらはファイルに含まれていないものとします。)

↑「XMLでは空白や改行もノードとみなす。」のですが、読みこむときに
$doc = domxml_open_file("xmltest31.xml",
DOMXML_LOAD_DONT_KEEP_BLANKS);

と指定すれば、余分な空白、改行は削除してくれました。他にも DOMXML_LOAD_PARSING
とか、いろいろ指定できるようです。

--------------------------------------------------------------------------------

3.とりあえず読みこんでみる

(1)スクリプト

require_once("XML/Parser.php");
echo "";
echo '';
echo "";

sub_func();
echo "";
echo "";

function sub_func(){

//XMLファイル読みこみ
$doc = domxml_open_file("xmltest.xml");
//ルートノード取得
$root = $doc->root();
//ルートノードの名称表示
echo "root : " . $root->node_name();
}
>

(2)ブラウザからの実行結果

root : table

無事ルートノード

が取得できているようだ。

--------------------------------------------------------------------------------

4.ルートノードに属性追加

(1)スクリプト

function sub_func(){

$doc = domxml_open_file("xmltest.xml");
$root = $doc->root();

//ルートノードに widthという名称の属性を308という値でセットする
$root->set_attribute("width", "308");
//以下、同様に属性セット
$root->set_attribute("cellspacing", "0");
$root->set_attribute("cellpadding", "0");
$root->set_attribute("border", "1");

echo "

";
//修正した文書 doc を展開して表示
echo htmlspecialchars($doc->dumpmem());
echo "
";

}

(2)ブラウザからの実行結果html [→見る]

width="300" cellspacing="0" cellpadding="0" border="1">                                        
あかりんご いちご ピクミン
きいろバナナ レモン ゴールデンキウイ ピクミン
みどりきゅうり きゃべつ キウイ
むらさきナス ピクミン

無事、赤字の属性が追加されている。

--------------------------------------------------------------------------------

5.th,tdに属性追加

(続く)

最近のブログ記事

MovableType(MT)テンプレート 無料(フリー)
Powered by Movable Type 4.261