このクラスは、XML データ用のデータソースドライバです。 文字列あるいはファイル名を受け付けます。 XPath 式を指定して、XML データの一部を取り出すこともできます。
このドライバは次の操作モードをサポートしています。
モード | サポートしている? |
---|---|
複数フィールドによる並べ替え | no |
レコードの追加、更新および削除 | no |
このドライバは、以下のオプションを受け付けます。
オプション | 型 | 説明 | デフォルト値 |
---|---|---|---|
fieldAttribute | string | XML ソースのどの属性をカラムのフィールド名として使用するか (XML ソースが属性をもっている場合にのみ使用します)。 | null |
fields | array | データソースからどのフィールドを取得するか。空の配列を指定すると、 すべてのフィールドを取得します。 array(field1, field2, ...) 形式となります。 | array() |
generate_columns | bool | ラベルつきの Structures_DataGrid_Column オブジェクトを作成します。 'labels' オプションを参照ください。 非推奨: 代わりに Structures_DataGrid::generateColumns() を使用してください。 | false |
labelAttribute | string | XML ソースのどの属性をカラムのラベルとして使用するか ('generate_columns' が true で、 XML ソースが属性をもっている場合にのみ使用します)。 | null |
labels | array | データフィールドとラベルの対応。 'generate_columns' が true の場合にのみ使用します。 array(field => label, ...) 形式となります。 非推奨: 代わりに Structures_DataGrid::generateColumns() を使用してください。 | array() |
natsort | boolean | 配列のソートを自然順 (example1、Example2、test1、Test2) で行うか否 (Example2、Test2、example1、test1; つまり大文字が最初にくる) か。 | false |
primaryKey | array | レコードを一意に決定する識別子を含むフィールドの名前、 あるいは数値インデックス (複数のフィールドを指定するのは、 複合主キーの場合のみです)。 | null |
xpath | string | XML データのサブセットへの XPath。 | '' |
シンプルな XML 文字列のバインド
<?php
$xml = <<<XML
<records>
<record>
<firstname>Olivier</firstname>
<lastname>Guilyardi</lastname>
<city>Paris</city>
<country>France</country>
</record>
<record>
<firstname>Mark</firstname>
<lastname>Wiesemann</lastname>
<city>Aachen</city>
<country>Germany</country>
</record>
</records>
XML;
// bind() のオプション (この例では使用しません)
$options = array();
// XML 文字列をバインドします
$test = $datagrid->bind($xml, $options, 'XML');
// バインド時にエラーが発生した場合は表示します
if (PEAR::isError($test)) {
echo $test->getMessage();
}
?>
より複雑な XML 文字列の ('xpath' オプションを使用した) バインド
<?php
$xml = <<<XML
<response>
<date>today</date>
<server>localhost</server>
<records>
<record>
<firstname>Olivier</firstname>
<lastname>Guilyardi</lastname>
<city>Paris</city>
<country>France</country>
</record>
<record>
<firstname>Mark</firstname>
<lastname>Wiesemann</lastname>
<city>Aachen</city>
<country>Germany</country>
</record>
</records>
</response>
XML;
// bind() のオプション
$options = array('xpath' => '/response/records');
// XML 文字列をバインドします
$test = $datagrid->bind($xml, $options, 'XML');
// バインド時にエラーが発生した場合は表示します
if (PEAR::isError($test)) {
echo $test->getMessage();
}
?>