オプションは、XML_Unserializer がパースされた XML をどの様に処理するか、 に影響します。 属性をパースすべきかどうか、複雑なデータ型を処理するために 連想配列もしくはオブジェクトのいずれを使用するか、などを定義します。
オプションは、 XML_Unserializer のコンストラクタ に連想配列として渡すことができます。 また、セットするために setOption() あるいは、 setOptions() を使用することもできます。
以下は、XML_Unserializer でサポートしている全てのオプションのリストです。
表 68-1XML_Unserializer options
オプション | 可能な値 | デフォルト | 詳細 |
---|---|---|---|
complexType | 'array' または 'object' | 'array' | ネストしたタグが連想配列もしくはオブジェクトのいずれで返されるかを 定義します |
tagAsClass | TRUE または FALSE | TRUE | complexType が 'object' に設定されている場合、 タグ名をクラス名として使用するかどうか、を定義します。 もし、タグの名前を持つクラスがない場合、 'defaultClass' によって定義されたクラスが使用されます。 |
defaultClass | 任意の文字列 | stdClass | complexType が 'object' に設定されている場合、 オブジェクトを生成するために使用されるクラスを定義します。 |
keyAttribute | 任意の文字列 または 配列 | '_originalKey' | もし、オプションで指定した属性がタグに存在していれば、 親オブジェクトもしくは配列でのキーもしくはプロパティ名に 使用されます。また、異なるタグに異なるキー属性を使用したい場合、 連想配列を指定することもできます。この場合、配列のキーは タグ名と属性名に一致する値を取ります。 |
typeAttribute | 任意の文字列 | '_type' | もし、この属性がタグに存在していれば、タグのコンテンツは指定した型に変換されます。可能な型は、string, integer, float, boolean, 配列もしくはオブジェクトです。 |
classAttribute | 任意の文字列 | '_class' | もし、XML_Unserializer がオブジェクトを生成する場合、タグがこのオプションで属性が指定されない限り、stdClassのインスタンスとなります。もし、セットされた場合、属性値としてストアされたクラス名が使用されます。 |
parseAttributes | TRUE または FALSE | FALSE | このオプションで、タグの属性もパースするかどうかを XML_Unserializer に指示することができます。 次の2つのオプションで、 パースされた属性をどの様に処理するかを定義します。 |
attributesArray | FALSE または任意の文字列 | FALSE | falseにセットされた場合、 属性はネストしたタグとして処理されます。 もし、文字列をセットした場合、新しい配列が生成され、 このオプションで指定したキーを使った親構造にストアされます。 |
prependAttributes | 任意の文字列 | '' | 属性名の接頭辞を指定します。 |
contentName | 任意の文字列 | '_content' | 属性や、cdata やタグを含むタグをパースする場合、 cdata はここで指定されたインデックスにストアされます。 |
tagMap | 連想配列 | array() | PHP クラスにタグ名をマップする事ができます。 タグ名はキーで、 値はそれぞれのタグで使用されるクラス名でなければなりません。 |
forceEnum | 順序付けされた配列 | array() | タグの反復数とは無関係に、順序づけされた配列に自動変換される タグのリストを指定することができます。これによりコード中の if 文を節約することができます。 |
encoding | 任意の有効なエンコーディング文字列 | null | オリジナル文章のエンコーディングを定義します。 |
targetEncoding | 任意の有効なエンコーディング文字列 | null | 結果データのエンコーディングを定義します。 |
decodeFunction | 任意の有効な PHP コールバック | null | このオプションを使用することで、結果にストアされる前に 文章の全ての文字データや属性に対して適用させるコールバック関数 またはメソッドを定義する事ができます。 これにより、XML 内のデータをデコードしたり、 全てのコンテンツを小文字に変換することができます。 |
returnResult | TRUE または FALSE | FALSE | TRUE の場合、文章がアンシリアライズ可能であれば XML_Unserializer::unserialize() はただの TRUE の代わりに結果を返します。 |
以下の例は、XML_Unserializer でどの様にオプションをセットするか、 を示しています。
例 68-1コンストラクタの使用法
|
以下の例は、インスタンスがすでに生成されている場合、 XML_Unserializer でどの様にオプションをセットするか、 を示しています。
例 68-2setOption() と setOptions() の使用法
|