PHPマニュアル/PEARマニュアル | ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot

| JavaScript入門&応用&リファレンスなら「JavaScriptist」

  

例 – XML_Serializer の使用例

単純な XML ドキュメントの構築

この例では、returnResult オプションを使用することで、 serialize() メソッドからシリアライズ済み XML ドキュメントを直接返します。

この例では、次の 3 行に注目しましょう。

<?php
$serializer 
= &new XML_Serializer($options);
$foo PEAR::raiseError('Just a test'1234);
$result $serializer->serialize($foo);
?>
<?php
error_reporting
(E_ALL);
require_once 
'XML/Serializer.php';
$options = array(
  
XML_SERIALIZER_OPTION_INDENT        => '    ',
  
XML_SERIALIZER_OPTION_RETURN_RESULT => true
  
);

$serializer = &new XML_Serializer($options);

$foo PEAR::raiseError('Just a test'1234);

$result $serializer->serialize($foo);

echo 
'<pre>';
echo 
htmlspecialchars($result);
echo 
'</pre>';
?>

そして、結果はこうなります。

<pear_error>
    <error_message_prefix />
    <mode>1</mode>
    <level>1024</level>
    <code>1234</code>
    <message>Just a test</message>
    <userinfo />
    <backtrace>
        <XML_Serializer_Tag>
            <file>pathToMypear\PEAR.php</file>
            <line>566</line>
            <function>pear_error</function>
            <class>pear_error</class>
            <type>-&gt;</type>
            <args>
                <XML_Serializer_Tag>Just a test</XML_Serializer_Tag>
                <XML_Serializer_Tag>1234</XML_Serializer_Tag>
                <XML_Serializer_Tag>1</XML_Serializer_Tag>
                <XML_Serializer_Tag>1024</XML_Serializer_Tag>
                <XML_Serializer_Tag />
            </args>
        </XML_Serializer_Tag>
        <XML_Serializer_Tag>
            <file>pathToMyDocRoot\cvs.php.net\pear\xml_serializer\examples\serializeandreturn.php</file>
            <line>19</line>
            <function>raiseerror</function>
            <class>pear</class>
            <type>::</type>
            <args>
                <XML_Serializer_Tag>Just a test</XML_Serializer_Tag>
                <XML_Serializer_Tag>1234</XML_Serializer_Tag>
            </args>
        </XML_Serializer_Tag>
    </backtrace>
    <callback />
</pear_error>

このソースコードの最新版が、パッケージ中に serializeAndReturn.php として含まれています。

RDF ドキュメントの構築

この例は、数行のコードで RDF ドキュメントを作成する方法を示します。 これは、mode => simplexml でも実行できます。

この例で注目すべき点は、次の 3 行です。

<?php
$serializer 
= new XML_Serializer($options);
    
$result $serializer->serialize($rdf);
    echo    
htmlentities($serializer->getSerializedData());
?>
<?php
/**
   * @see    serializeIndexedArray.php
   */
    
error_reporting(E_ALL);

    require_once 
'XML/Serializer.php';

    
$options = array(
      
"indent"          => "    ",
      
"linebreak"       => "\n",
      
"typeHints"       => false,
      
"addDecl"         => true,
      
"encoding"        => "UTF-8",
      
"rootName"        => "rdf:RDF",
      
"rootAttributes"  => array("version" => "0.91"),
      
"defaultTagName"  => "item",
      
"attributesArray" => "_attributes"
      
);
    
    
$serializer = new XML_Serializer($options);

    
$rdf = array(
      
"channel" => array(
        
"title" => "Example RDF channel",
        
"link"  => "http://www.php-tools.de",
        
"image" => array(
          
"title" => "Example image",
          
"url"   => "http://www.php-tools.de/image.gif",
          
"link"  => "http://www.php-tools.de"
          
),
        
"_attributes" => array( "rdf:about" => "http://example.com/foobar.html" ),
        array(
          
"title"       => "Example item",
          
"link"    => "http://example.com",
          
"_attributes" => array( "rdf:about" => "http://example.com/foobar.html" )
          ),
        array(
          
"title"    => "Another item",
          
"link"    => "http://example.com",
          
"_attributes" => array( "rdf:about" => "http://example.com/foobar.html" )
          ),
        array(
          
"title"    => "I think you get it...",
          
"link"    => "http://example.com",
          
"_attributes" => array( "rdf:about" => "http://example.com/foobar.html" )
          )
        )
      );
    
    
$result $serializer->serialize($rdf);
    
    if( 
$result === true ) {
        echo    
"<pre>";
        echo    
htmlentities($serializer->getSerializedData());
        echo    
"</pre>";
    }
?>

結果はこうなります。

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF version="0.91">
    <channel rdf:about="http://example.com/foobar.html">
        <title>Example RDF channel</title>
        <link>http://www.php-tools.de</link>
        <image>
            <title>Example image</title>
            <url>http://www.php-tools.de/image.gif</url>
            <link>http://www.php-tools.de</link>
        </image>
        <item rdf:about="http://example.com/foobar.html">
            <title>Example item</title>
            <link>http://example.com</link>
        </item>
        <item rdf:about="http://example.com/foobar.html">
            <title>Another item</title>
            <link>http://example.com</link>
        </item>
        <item rdf:about="http://example.com/foobar.html">
            <title>I think you get it...</title>
            <link>http://example.com</link>
        </item>
    </channel>
</rdf:RDF>

このソースコードの最新版が、パッケージ中に serializeRDF.php として含まれています。

注意: RDF/RSS ドキュメントのパース (読み込み) 方法を知りたい場合は、 XML_RSS パッケージを参照ください。

DTD を使用した XML ドキュメントの構築

この例では、XML ドキュメントに DocType 宣言を追加する方法を示します。

この例では、次の 3 行に注目しましょう。

<?php
$serializer 
= new XML_Serializer($options);
    
$result $serializer->serialize($rdf);
    echo    
htmlentities($serializer->getSerializedData());
?>
<?php
error_reporting
(E_ALL);

    require_once 
'XML/Serializer.php';

    
$options = array(
      
"indent"     => "    ",
      
"linebreak"  => "\n",
      
"addDecl"    => true,
      
"addDoctype" => true,
      
"doctype"    => array(
        
'uri' => 'http://pear.php.net/dtd/package-1.0',
        
'id'  => '-//PHP//PEAR/DTD PACKAGE 0.1'
        
)
      );
    
    
$serializer = new XML_Serializer($options);

    
$foo    =   PEAR::raiseError("Just a test"1234);    
    
    
$result $serializer->serialize($foo);
    
    if( 
$result === true ) {
        echo 
'<pre>';
        echo 
htmlentities($serializer->getSerializedData());
        echo 
'</pre>';
    }
?>

結果はこのようになります。

<?xml version="1.0"?>
<!DOCTYPE pear_error PUBLIC "-//PHP//PEAR/DTD PACKAGE 0.1" "http://pear.php.net/dtd/package-1.0">
<pear_error>
    <error_message_prefix />
    <mode>1</mode>
    <level>1024</level>
    <code>1234</code>
    <message>Just a test</message>
    <userinfo />
    <backtrace>
        <XML_Serializer_Tag>
            <file>pathToMyPear\PEAR.php</file>
            <line>566</line>
            <function>pear_error</function>
            <class>pear_error</class>
            <type>-&gt;</type>
            <args>
                <XML_Serializer_Tag>Just a test</XML_Serializer_Tag>
                <XML_Serializer_Tag>1234</XML_Serializer_Tag>
                <XML_Serializer_Tag>1</XML_Serializer_Tag>
                <XML_Serializer_Tag>1024</XML_Serializer_Tag>
                <XML_Serializer_Tag />
            </args>
        </XML_Serializer_Tag>
        <XML_Serializer_Tag>
            <file>pathToMyDocumentRoot\cvs.php.net\pear\xml_serializer\examples\serializewithdtd.php</file>
            <line>24</line>
            <function>raiseerror</function>
            <class>pear</class>
            <type>::</type>
            <args>
                <XML_Serializer_Tag>Just a test</XML_Serializer_Tag>
                <XML_Serializer_Tag>1234</XML_Serializer_Tag>
            </args>
        </XML_Serializer_Tag>
    </backtrace>
    <callback />
</pear_error>

このソースコードの最新版が、パッケージ中に serializeWithDTD.php として含まれています。

忘却曲線を使ってこの知識を確実に記憶に残す

フォーラムで「」について話す
各種マニュアル: PHPマニュアル | PEARマニュアル | Smarty(英語)マニュアル | PHP-GTKマニュアル | 」をGoogle検索
copyright © 1997-2024 PHP ドキュメント作成グループ(ライセンス). provided by php spot. マニュアル: