画像のファイル名を取り出し、表示するだけなら、
<?php
if ($handle = opendir('./img')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
echo "$file\n";
}
}
closedir($handle);
}
?>
で表示されますが、
その取得したファイル名を
$img = $root->appendChild($doc->createElement('image'));
$img->appendChild(
$doc->createtextNode(画像ファイル名));
DOMでXML出力しようとするとうまくいきません。
取得したファイル名を表示させるにはどうすればよいのか、ご教授いただきたいのです。
よろしくお願いします。
$rootや$docが何を指しているのかよく分からないのですが、append_childの指定に問題があるのではないかと思います。下記サイトを参考にしてください。
><image>のタグだけが空要素で吐き出されてしまいます。
単純に$fileが空(設定忘れ)だったということはないでしょうか。
示されたコードではうまく動いているように見えるのですが。
ファイル名の取得に面倒なのでglob()を使っています
$doc = new domDocument('1.0'); $doc->formatOutput = true; //#root作成 $root = $doc->createElement('item'); $root = $doc->appendChild($root); // #画像ファイル名出力 foreach (glob('./*.{png,jpeg,bmp}',GLOB_BRACE) as $file) { $img = $root->appendChild($doc->createElement('image')); $img->appendChild( $doc->createtextNode($file)); } $doc->save("/tmp/xml.xml");
結果
<?xml version="1.0"?> <item> <image>./Google.Yahoo_Web_Service.png</image> <image>./XML_XParse.png</image> <image>./android.first.png</image> <image>./array_html.png</image> <image>./capture.bmp</image> </item> |
画像のファイル名を取り出しを同じようにするならglob()は
glob('./img/*')
となりますがglobは名前だけではなくパスとして返すのでbasename()で名前だけにする必要があります。
サンプルまで記載頂きありがとうございました。
無事出力することができました。
お早い回答ありがとうございます。
詳しいことを書かず、申し訳ありませんでした。
以下のソースでXML出力しています。
$doc = new domDocument('1.0');
$doc->formatOutput = true;
#root作成
$root = $doc->createElement('item');
$root = $doc->appendChild($root);
#画像ファイル名出力
$img = $root->appendChild($doc->createElement('image'));
$img->appendChild(
$doc->createtextNode($file));
<image>のタグだけが空要素で吐き出されてしまいます。何が問題なのでしょうか?