簡単漫画アップローダーその2 XMLをDOMで

この記事つづき。
前回リネーム処理のwhileのとこ、while ($i <= count($list)-1)よりwhile ($i < count($list))の方がスッキリ書けるな。


さて今回は、XMLを生成してみます。
Comicflashでは、作品ごとに下記のようなXMLが必要。

<?xml version="1.0"?>
<preference>
    <pageFolder>pages/</pageFolder>
    <partsFolder>image/</partsFolder>
    
    <maxpage>2</maxpage>
    <pagetype>png</pagetype>
    
    <useScope>0</useScope>
    <scopedPageFolder>pages_large/</scopedPageFolder>
    
    <prevstory></prevstory>
    <nextstory></nextstory>
    <webclap></webclap>
    
    <refreshImageCash>0</refreshImageCash>
    
    <bgColor>#333333</bgColor>
    
    <listStyle>
        <bgColor>#ffffff</bgColor>
        <fontColor>#000000</fontColor>
        <rollOverColor>#ccccff</rollOverColor>
        <selectColor>#9999ff</selectColor>
        <textRollOverColor>#000000</textRollOverColor>
        <textSelectColor>#000000</textSelectColor>
    </listStyle>
</preferenece> 

とりあえず絶対変えなければならないのは、つまりページ数。
scandirで取得した数を変数にします。
このxmlをどうやって使うかですがDOMというものを使います。
こちらの記事が一番参考になった!

[PHP/テクニック] PHPでXMLを出力する | 株式会社オルタ

サンプルどおりにちゃんとxmlが生成されました。
ただ、この場合はxmlをブラウザに出力じゃなくてファイルとして保存したいから最後の部分

<?php
// DomXMLをXML形式で出力  
echo $dom->saveXML();  
//の部分を
$dom->saveXML($filename);
//で$filenameの名前でxmlが保存される
//↑間違ってた。正解はこっちです↓
$dom->save($filename);
?>

とりあえず。
はい、comicflash用のxml生成phpが出来ました。

<?php
//ページ数の変数(とりあえず)
$pageno = 10;
//拡張子(とりあえず)
$type = "png"; 
$filename = 'pref.xml';  //  ファイル名  
  
$dom = new DomDocument('1.0');  // DOMを作成  
$dom->encoding = "UTF-8"; // 文字コードをUTF-8に  
$dom->formatOutput = true; // 出力XMLを整形(改行,タブ)する  

$preference = $dom->appendChild($dom->createElement('preference'));

$pageFolder = $preference->appendChild($dom->createElement('pageFolder'));  
$pageFolder->appendChild($dom->createTextNode('pages/'));

$partsFolder = $preference->appendChild($dom->createElement('partsFolder'));  
$partsFolder->appendChild($dom->createTextNode(''));

$maxpage = $preference->appendChild($dom->createElement('maxpage'));
$maxpage->appendChild($dom->createTextNode($pageno));  

$pagetype = $preference->appendChild($dom->createElement('pagetype'));  
$pagetype->appendChild($dom->createTextNode($type));

$useScope = $preference->appendChild($dom->createElement('useScope')); 
$useScope->appendChild($dom->createTextNode('0'));

$scopedPageFolder = $preference->appendChild($dom->createElement('scopedPageFolder')); 
$scopedPageFolder->appendChild($dom->createTextNode('pages_large/'));

$prevstory = $preference->appendChild($dom->createElement('prevstory'));
$prevstory->appendChild($dom->createTextNode(''));

$nextstory = $preference->appendChild($dom->createElement('nextstory')); 
$nextstory->appendChild($dom->createTextNode(''));

$webclap = $preference->appendChild($dom->createElement('webclap')); 
$webclap->appendChild($dom->createTextNode(''));

$refreshImageCash = $preference->appendChild($dom->createElement('refreshImageCash'));
$refreshImageCash->appendChild($dom->createTextNode('0'));

$bgColor = $preference->appendChild($dom->createElement('bgColor'));
$bgColor->appendChild($dom->createTextNode('#333333'));


$listStyle = $preference->appendChild($dom->createElement('listStyle'));

 
$linebgColor= $listStyle->appendChild($dom->createElement('bgColor'));  
$linebgColor->appendChild($dom->createTextNode('#ffffff'));  
  
 
$fontColor= $listStyle->appendChild($dom->createElement('fontColor'));  
$fontColor->appendChild($dom->createTextNode('#000000'));  

 
$rollOverColor= $listStyle->appendChild($dom->createElement('rollOverColor'));  
$rollOverColor->appendChild($dom->createTextNode('#ccccff'));  
  
 
$selectColor= $listStyle->appendChild($dom->createElement('selectColor'));  
$selectColor->appendChild($dom->createTextNode('#9999ff'));  


$textRollOverColor= $listStyle->appendChild($dom->createElement('textRollOverColor'));  
$rollOverColor->appendChild($dom->createTextNode('#000000'));  
  
 
$textSelectColor= $listStyle->appendChild($dom->createElement('textSelectColor'));  
$selectColor->appendChild($dom->createTextNode('#000000'));  


$dom->save($filename);
//で$filenameの名前でxmlが保存される
?>

思い通りのものが出力されました。