.




うぇブログ2
最新エントリ

2005/02/04
カテゴリ : XML_Serializer

執筆者: itoh (1:25 am)
指定したオプションでクラスを作成した後は、データを作り、serializeメソッドでデータを入れる。
引用:

$status = $Serializer->serialize($data);


引数は、オブジェクトでも配列でも。

配列の場合、キーがタグ名になりバリューがタグで囲まれる。
オブジェクト(クラス)の場合、要素名がタグ名になり、その値がタグで囲まれる。


オプションの使い方にちょっとこつがあるが、使うのは楽なクラスなのであとは実践あるのみでやってみると良いと思う。
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (5114)
2005/02/04
カテゴリ : 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) | 閲覧数 (20820)
2005/02/04
カテゴリ : XML_Serializer

執筆者: itoh (12:19 am)
PEARのXML_Serializerクラスは、XMLをクラスや配列から作成したり、XMLの記述を配列に格納したりすることができる。

現時点ではβ版しか出ていないので、pearでinstallする際にはstableでなくてもインストールできる設定にする必要がある。もしくは、ファイルだけ持って来てもよい。
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (5326)
2005/01/31
カテゴリ : XML_Serializer

執筆者: itoh (2:49 am)
mixiにrdfでweblogモジュールの内容を反映させようと、rdf生成プログラムの作成に取りかかる。

最初、wordpressモジュールのwp-rdf.phpを参考にしようと思ったら、includeしまくってて断念。そこで、pearを使おうと思った。

PEAR::XML_Serializerを見つけて、rdfは生成できるらしいのだが、なにしろドキュメントが皆無。β版なので公式ドキュメントもない。全く手が出ない状況だったのだが、PHP-users-MLで
http://ns1.php.gr.jp/pipermail/php-users/2004-December/024339.html
を読んで、とりあえずとっかかりができた。しかし、この投稿者は岩手情報大の学生のようだが、よくここまで書けたものだと感心した。どうも英語が達者ならしく、海外のPEAR-MLでも同様の質問をしていた。

おそらく
http://www.sitepoint.com/article/xml-php-pear-xml_serializer
あたりを読んで、かなり解読したのだろう。


で、この学生さんと同じところでひっかかった。


リンクの一覧を表示するのに、閉じタグがないやつ(<input ... />とか<br />とかね。)の表現がうまくいかない。結論から言うと、上記のPHP-users-MLのフォローにあった"mode=simplexml"でうまくいったのだが、これはソースをグリグリといじってて適当にやってたらうまくいったというのが本音。

とりあえず、mixiにあげてみてうまくいくかチェック。うまくいったら、ソース公開します。

※うまくいったようです。ダウンロードのページに置いておきます。
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (4867)



 





メインメニュー

カテゴリ一覧

Google Adsense

うぇブログ カレンダー


XoopsCube Ring
Amethyst Blue - BULLETIN


.