.





2005/02/04
PEAR::XML_Serializer XMLファイルを配列から作成:クラス作成時のオプションについて
カテゴリ : XML_Serializer
執筆者: itoh (1:08 am)
PEAR::XML_Serializerの使用例を、配列からRDFファイル(RSS1.0)を作成するときを例にとって説明。

まず、XML_Serializerクラスを作成。その際に、オプションを設定することで様々な場合に対応できるらしい。
引用:

require_once  "XML/Serializer.php";

$options = array(
  
"mode" => "simplexml" ,
  
"indent"    => "    ",
  
"linebreak" => "?n",
  
"typeHints" => false,
  
"addDecl"   => true,
  
"encoding"  => "UTF-8",
  
"rootName"  => "rdf:RDF",
  
"rootAttributes" => array(
       
"xmlns" => "http://purl.org/rss/1.0/",
       
"xmlns:rdf" => "http://www.e3.org/1999/02/22-rdf-syntax-ns#",
       
"xmlns:dc" => "http://purl.org/dc/elements/1.1/",
       
"xmlns:sy" => "http://purl.org/rss/1.0/modules/syndication/",
       
"xmlns:admin" => "http://webns.net/mvcb/",
       
"xmlns:content" => "http://purl.org/rss/1.0/modules/content/",
       
"xml:lang" => "ja"),
  
"defaultTagName" => "item",
  
"attributesArray" => "_attributes"
);

$Serializer = &new XML_Serializer($options);




最初のrequire_onceで、pear呼び出し。
最後の行で、クラスを作成。後でこのクラスにXMLコーディングしたいデータをクラスなり配列なりで加えていく。

で、クラス作成時に引数として使う$option配列の各キーに入れる値はこんな意味がある。


[mode]:
値にsimplexmlを指定することで、連想配列でない配列(キーが0,1,2...のやつね)の場合はその親のキーがタグ名として使われる。これを指定しない場合は、defaultTagNameオプションで指定されたタグ名が使われる。

たとえば、配列
$yasai = array(
"fruits"=>array("banana","apple","melon","orange"),
)
を表示するときに
mode=simplexmlを指定した場合
<fruits>banana</fruits>
<fruits>apple</fruits>
<fruits>melon</fruits>
<fruits>orange</fruits>
modeを指定しない場合(defaultTagName=itemの場合)
<fruits>
   <item>banana</item>
   <item>apple</item>
   <item>melon</item>
   <item>orange</item>
</fruits>
となる。


[indent](default = ""):人がXMLファイルを見たときにインデントに使う文字列。人が見ないことを前提にするなら、空文字で良い。


[linebreak](default = "?n"):改行に使う文字。人が見ないことを(以下略)


[typeHints](default = FALSE):XMLタグの属性にその要素が配列から作成されたか、クラスから作成されたか、文字列から作成されたかなどの作成前の情報を付与する。
これは、その後XMLをUnserializeする際に有用である。多分、PEAR::XML_Unserializeで使うんだと思うが、そのつもりがないなら、falseにするべきだと思う。

[addDecl](default = FALSE):<?xml version="1.0"?>のタグを付けるか付けないか。

[encoding](default = ""):addDeclオプションで付けたタグにencode属性を付けるときの値。

[rootName](default = ""):ルートの(最初の)XMLタグ名。デフォルトのままだと、そのデータの型が入る。例えば、arrayとかclassとか。

[rootAttributes](default = array()):rootNameで指定されたルートタグに入れる属性を配列で指定。

[defaultTagName](default = "XML_Serializer_Tag"):連想配列ではなく、連番の配列で値を入れたときのタグ名。modeでsimplexmlを指定していても、親のキーが存在しないときはこれが使われる。

[attributesArray](default="null"):このキーが現れたら、以降は親のキーをタグ名として、そのタグの属性として処理される。


上記の例で使っているのは、これだけだが、ほかにも
[addDoctype] (default = FALSE): <!DOCTYPE>のタグを付けるか付けないか。

[doctype] (default = null): 上記のタグのURI属性


[indentAttributes](default =FALSE): タグの属性を表示するときに使うインデント。"_auto"にしておくと、見やすくしてくれる。

[scalarAsAttributes](default = FALSE): 連想配列を展開中にキーが数字だった場合、親キーをタグ名としてノードを分ける。


なんてのがある。(他にもある。
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (9879)
トラックバックURL


 





メインメニュー

Google Adsense

XoopsCube Ring
Amethyst Blue - BULLETIN


カテゴリ一覧
うぇブログ カレンダー


.