phpでxml関連のライブラリーは結構ありますが、一番手軽なのはPEARのXML_Serializerだと思います。 ※Cakeとか、フルスッタクのフレームワークに入ってるxmlのコンポーネントがある場合はそちらのほうが手軽です。

目次

  • XML_Serializerインストール
  • XMLの出力
  • XMLの受け取り

XML_Serializerインストール

PEARでインストール

pear install XML_Serializer

手動でインストール

XML_Serializer.

からライブラリーをダウンロード、解凍して、適当な場所に保存する。 XML_UtilXML_Parserと依存しているので、合わせてダウンロードしてインストールしておく。 ※PEARはインストール済みを想定。されてない場合は、インストールする必要がある。

XMLの出力

require_once 'XML/Serializer.php'; $data = array('aaa' => 'bbb', 'ccc' => 'ddd'); $options = array( "indent" => " ", "linebreak" => "\n", "typeHints" => false, "addDecl" => true, "encoding" => "EUC-JP", "rootName" => "result", "defaultTagName" => "item", ); $serializer = new XML_Serializer($options); $status = $serializer->serialize($data); if( $status === true ) { $xml = $serializer->getSerializedData(); header ("Content-Type: text/xml; charset=EUC-JP"); echo $xml; exit; } exit;
文字コードはEUC-JPに指定しています。

XMLの受け取り

require_once 'XML/Unserializer.php'; $header = array( "User-Agent: ".$_SERVER["HTTP_USER_AGENT"] ); $options = array( "http" => array( "method" => "GET", "content" => http_build_query(array()), "header" => implode("\r\n", $header) ) ); $api_uri = 'http://example.com/'; // xmlを出力するURL $xml = file_get_contents($api_uri, false, stream_context_create($options)); $obj = new XML_Unserializer(); $obj->setOption("parseAttributes", true); $status = $obj->unserialize($xml); if ($status === true) { $xml_data = $obj->getUnserializedData(); mb_convert_variables('EUC-JP', 'UTF-8', $xml_data); print_r($xml_data['item']); } exit;
こんな感じで、xmlを読み込むことができます。 オプションは

XML_Unserializer Options.

が参考になります。 ちなみに、file_get_contentsでGETでパラメータ付きリクエスト送りたい場合は、

file_get_contents() で GET リクエストを送る場合の値は URL に持たせる | ウェブル.

xmlを出力する方でBASIC認証を指定したい場合もあると思いますが、file_get_contentsではBASIC認証されたディレクトリのファイルも取得できます。

$header = array( "Authorization: Basic ".base64_encode("User:Pass"), "User-Agent: ".$_SERVER["HTTP_USER_AGENT"] );