この例では、returnResult オプションを使用することで、 serialize() メソッドからシリアライズ済み XML ドキュメントを直接返します。
この例では、次の 3 行に注目しましょう。
$serializer = &new XML_Serializer($options); $foo = PEAR::raiseError('Just a test', 1234); $result = $serializer->serialize($foo); |
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>-></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 ドキュメントを作成する方法を示します。 これは、mode => simplexml でも実行できます。
この例で注目すべき点は、次の 3 行です。
$serializer = new XML_Serializer($options); $result = $serializer->serialize($rdf); echo htmlentities($serializer->getSerializedData()); |
/** * @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 パッケージを参照ください。
この例では、XML ドキュメントに DocType 宣言を追加する方法を示します。
この例では、次の 3 行に注目しましょう。
$serializer = new XML_Serializer($options); $result = $serializer->serialize($rdf); echo htmlentities($serializer->getSerializedData()); |
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>-></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 として含まれています。