XMLファイルをPHPで読み込むには?

このQ&Aのポイント
  • PHPでXMLファイルを読み込む方法について、PHP4とPHP5での違いやPEARを使用する方法について調べています。
  • PHP4ではどのようにXMLを扱うかわからず困っています。また、PEARを使用せずにXMLを読み込む方法があるかもしれません。
  • 初心者向けのPEARの使い方を解説しているサイトがあれば教えてください。XMLファイルをPHPで読み込む方法を知りたいです。
回答を見る
  • ベストアンサー

XMLファイルをPHPで読み込むには?

PHPとXMLを勉強しております。タイトル通りなのですが、どのようにすればよいのでしょうか? PHP4とPHP5ではやりかたが違うようなのですが・・・。 一応自分なりに調べてみたのですがphp5ではsimpleXML関数を使用すればできるようなのですが、私が使用しているサーバーがロリポップでして、PHP4ではどうすればいいのでしょうか。 PEARを使用するといった文章をよく観たのですが、さっぱりわからない状態です。 PEARの使い方を初心者でもわかりやすく書いてあるサイトはありませんでしょうか。できればPEARを使用せずにXMLを読み込む方法などもありましたら、ご助言をお願いいたします。

  • XML
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

PHP5なら、前に回答したPEARのXML_Serializerの利用と同等の事が 簡単にできます。​ <?php $string = file_get_contents( XXXXX.XML); $xml = simplexml_load_string($string); /* Result Print*/ print "<pre>"; print_r ($xml); print "</pre>"; ?>

その他の回答 (2)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

PEARの使い方(概要) PEARとは、超簡単にいうと、PHPの便利な機能を集めたオープンソースのライブラリー集です。もしかして、ロリポップならすでにPEARの基本部分のパッケージは、既にインストールされているようです。PHPでXMLを扱うための便利なパッケージを、 http://pear.php.net/packages.php からたどっていって、見つけます。 日本語の翻訳マニュアルは http://pear.plus-server.net/index.html です。  例えば、XMLをそのままアンシリアライズ (読み込む) ためのクラスが必要なら、 http://pear.php.net/package/XML_Serializer のダウンロードページからソースを落とします。  この時Dependencies(依存)に記載されている項目もチェックします。   ※基本的な部分はすでにロリポップにインストールされているはず    です。無いパッケージは別途ダウンロードします。)  次に、自分のホームディレクトリーに自分用のPEARディレクトリーを作っておきます。(以下は /local-pear を自分用に作った例です)  そして、ダウンロードして解凍したPHPファイルを自分用のPEARディレクトリー内に正しく配置します。 XML関連のパッケージ(XML::)は、/local-pear/XML となりますからこの中に、 /local-pear/XML/Parser.php /local-pear/XML/Serializer.php /local-pear/XML/Unserializer.php と置きます。 PHPプログラムでこれを使うには、 まずインクルードパスを追加して、次の用に組み込みます <?php set_include_path(get_include_path() . PATH_SEPARATOR . '../local-pear'); require_once("XML/Unserializer.php"); /* 組み込んだ後は、以下の用に使えます。 (XXXXX.XMLを連想配列$dataに変換します) */ $xml = file_get_contents( XXXXX.XML); $options = array('encoding' => 'UTF-8'); $unserializer =& new XML_Unserializer($options); $unserializer->setOption('parseAttributes', TRUE); $status = $unserializer->unserialize($xml); if (PEAR::isError($status)) { die($status->getMessage()); } $data = $unserializer->getUnserializedData(); /* Result Print*/ print "<pre>"; print_r ($data); print "</pre>"; ?>

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

php4から使えるxml_parser関数群というのがあります。 http://jp.php.net/manual/ja/ref.xml.php マニュアルにもいろいろ例文が載ってるので、自分のやりたいことに近いのを探してみて下さい。

参考URL:
http://jp.php.net/manual/ja/ref.xml.php

関連するQ&A

  • PHP4でのXMLデータの取り扱い

    Webサービスを利用してXMLデータを取得するスクリプトをPHPで書いています。レンタルサーバの関係でバージョンは4.4.4しか使えません。 XMLを扱う関数というと、PHP5ではsimpleXMLやXMLReaderなどがあるようで、各要素へアクセスするにも $xml=simplexml_load_file('books.xml'); foreach($xml->book as $book){ .... という感じでオブジェクトとしてアクセスできるようですが、こういうのをPHP4で実現する方法はないのでしょうか?例えば入れ子になったデータだと、深い階層にたどりつくために foreach($results as $key => $value){ foreach($value $key2 => $value2){ foreach($value $key3 => $value3){ ... } } } みたいな感じで書いているのですが、まったくスマートではないですし、なにか間違っているような気がします。良い方法があればお教えください。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PEAR:XMLで文字化け

    Amazon ECS4.0を使ってショッピングサイトを作っているところです。 そのために、XMLデータから必要な情報を取りだすために、PEAR:XMLを使っているのですが、 取り出した情報の日本語が文字化けしてしまいます。 PHP5が使えないレンタルサーバーを利用しているため、SimpleXMLは使えません。 あるサイトでPEAR:XMLはマルチバイト文字に対応していないという記述を見つけたのですが、そのせいでしょうか? もし、何か対策があればと思い質問させていただきました。 アドバイス、よろしくお願いします!

    • 締切済み
    • PHP
  • PHPで、xmlを書き換えたい

    PHP初心者です。 年月日を記録してあるxmlを、phpから書き換えたいのですが、 動作しなくて困っています。。 現在の年月日は 2011.4.7 で 書き換え後の年月日は 2100.9.9 にしたいです。 「index.html」と「memory.xml」が同じフォルダ内にあります。 ●memory.xmlの内容は以下のとおりです-------------------- <?xml version="1.0"?> <memory>   <year>2011</year>   <month>4</month>   <day>7</day> </memory> ●htmlに以下のphpコードを書きました-------------------- <?php   $memoryFile = 'memory.xml';   if ( $xml = simplexml_load_file ( $memoryFile ) ) {     function changeMemory ( $year, $month, $day ) {       $xml -> year = $year; //年の書き換え       $xml -> month = $month; //月の書き換え       $xml -> day = $day; //日の書き換え       $xml -> asXML ( $memoryFile ); //ファイルに書き出す     }     changeMemory ( 2100 , 9 , 9 );   } ?> どうも、以下の1文が作動してくれない気がします。。 $xml -> asXML($memoryFile); //ファイルに書き出す どなたか原因がわかる方いらっしゃいましたら、 なにとぞご教授よろしくお願いいたします。。

    • ベストアンサー
    • PHP
  • PHPを使ってXML署名を作成しようとしています。

    PHPを使ってXML署名を作成しようとしています。 いつもお世話になっております。 今回PHPを使用してXML署名のXMLファイルを作成したいと考えています。 そこで、IEにインポートした証明書の情報をPHPで取得することは可能でしょうか。 関連するモジュール、関数なんでも結構です。 現時点ではサーバ上に電子証明書のファイル(.p12)をアップロードしOpenSSLのopenssl_pkcs12_read関数を使用して情報を取得できることはわかりました。 できればIEにインポートしている証明書の中からデータを取得したいと考えています。 当方の環境は以下です。 PHP Version 5.2.6 OpenSSL 0.9.8g 19 Oct 2007 PHPの開発について初心者ですが、なにとぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpの情報をxmlで保存

    こんにちは、PHP初心者です。 質問なのですが、たとえばPHPによって作成されたWebページで、入力フォームがあるとします。その入力されたフォームの情報をXMLで保存したいのですが、どのような方法があるでしょうか。 また逆に、XMLで保存された情報(数値など)を参照し、Web上のそれぞれのフォームに入力できる方法はどのようにすれば良いのでしょうか。  SimpleXMLなど調べているのですがどうもわかりません。知識不足ですみません、よろしくお願いします。

  • PHP4でXMLを取得する方法

    XMLをPHPにて参照したいのですが、 レンタルサーバーがPHP4の為、PearのXML_Unserializerを使用しています。 通常問題なく使用できていたのですが、 http://weather.livedoor.com/forecast/rss/index.xml から取得してみようとした所、<ldWeather:lwws id="*" /> の箇所がどうしても取得出来ません。 print_rにて確認したところ、[ldWeather:lwws]となっているのですが、コロンがある場合はどのように取得したらいいのでしょうか? 以下がコードになります require_once("Unserializer.php"); $add = "http://weather.livedoor.com/forecast/rss/index.xml"; $xmldoc = join("",file($add)); $opt = array ('complexType' => 'object','parseAttributes' => 'true','attribuesArray' => '_attributes'); $xml = new XML_Unserializer($opt); $xml -> unserialize($xmldoc, false); $xml = $xml->getUnserializedData(); mb_convert_encoding($xml, "SJIS","UTF-8"); print_r($xml->channel->item[1]->ldWeather:lwws);←ここが問題箇所 PHPを始めたばかりで説明に不十分な箇所があるかも知れませんが、よろしくお願い致します。 PHPバージョン:PHP Version 4.4.6 XML取得先:Livedoor Weather Web Service 利用目的:勉強の為

    • ベストアンサー
    • PHP
  • xmlの表示が良くわかりません。

    環境は windowsxp apache2.0.52 php4.3.9です。 http://news.goo.ne.jp/news/topics/ や http://www.asahi.com/ で提供してくれているrssを自分のhpに表示したいのですが、まったくうまくいきません。 http://php.s3.to/(レッツPHP)で提供してくれているrssちぇっかーを利用してみようと思ったのですが、pearの設定や拡張モジュールの設定の仕方が悪いのか、まったく活用できません。 xmlをhtmlに表示させるコードと同じフォルダにPEAR.phpとparser.php,RSS.phpを入れてみましたがだめでした。 質問は、xmlを使用する際のPEARと必要な拡張モジュールの設定の仕方から、活用の仕方が初心者でもわかるように書かれているHPや、参考書はありませんでしょうか。 (一応、拡張モジュールについては、php.iniのなかの mb_string.dllと、php_domxml.dllの前の;は消したのですが、まずxml自体localの環境で表示してくれません。←自分で作った簡単なxmlなら表示してくれるのですが) また、もしよければ、上記のgooや朝日で提供してくれているrssを表示させられるコードを教えてはいただけませんでしょうか。(ヒントだけでもかまいません。) とても長くなってしまい、また、ピントのずれたことを書いているかもしれませんが、ほとほと参っています。どうかよろしくお願いします。

    • ベストアンサー
    • PHP
  • 「Warning: simplexml_load_string() [

    「Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 61: parser error : Entity 'rsaquo' not defined」というようなエラーが出てPHPファイルが実行できません。 simplexml_load_string() はphpのpearのXMLフォルダのUtil.phpの中の関数と思われるのですが、ちゃんと関数があるのにどうしてエラーが出ているのでしょうか。

    • ベストアンサー
    • PHP
  • SimpleXML関数で取得したXML要素を逆順にしたい

    SimpleXML関数で取得したXML要素を逆順にしたい お世話になります。 phpのsimplexml関数で取得したXML要素を 逆順にして表示させるにはどうしたらよいでしょうか? 通常、RSSなどを読み込み表示させた場合、新しいものから並ぶと思いますが、 これを逆順で古いほうから並ばせたいです。 rsortやarray_reverseを使ってみましたが、うまくいきませんでした。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PEARのXML/Unserializer.phpが見つからない

    PHP5をインストールしたローカル環境で、落ちていたサンプルコードを改造して使おうとしているのですが、PearのXML/Unserializer.phpが無いと言われます。 PEARのサイトで検索してみても見つかりません。 どこで見つけたらよいのでしょうか? それともPHP5では使えないのでしょうか? ちなみに落ちていたサンプルコードは以下の通りです。 <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>PHPのPEARパッケージであるServices_Amazon</title> <meta name="description" content="Amazonウェブサービスを簡単に扱うことができるPEARのServices_Amazonを使ってみる。" /> </head> <body> <form method="POST" action="<?php $_SERVER['PHP_SELF'] ?>"> 書籍検索: <input type="text" name="keywd" size="30" maxlength="255" value="<?php print($_POST['keywd']); ?>" /> <input type="submit" value="検索" /> </form> <?php // 検索ボックスに入力されたかの判定 if($_POST['keywd'] != '') { $AWSAccessKeyId = "****************"; $Version = "2008-04-07"; $AssociateTag = "working16h-22"; $SearchIndex = "Books"; $ResponseGroup = "Medium"; $Keywords = htmlspecialchars($_POST['keywd']); require_once 'Services/AmazonECS4.php'; $amazon = new Services_AmazonECS4($AWSAccessKeyId,$AssociateTag); $amazon->setLocale('JP'); $option = array( 'Keywords' => $Keywords, 'Sort' => 'salesrank', 'ResponseGroup' => $ResponseGroup, 'Version' => $Version, ); $result = $amazon->ItemSearch($SearchIndex,$option); if(PEAR::isError($result)){ die($result->message); } foreach ($result["Item"] as $key => $value){ $ama1 = $value["DetailPageURL"]; $ama2 = $value["ItemAttributes"]["Title"]; $ama3 = $value["ItemAttributes"]["Author"][0]; print('<p>タイトル:<a href="' . $ama1 . '" target="_blank">' . $ama2 . '</a><br />著者:' . $ama3 . '</p>'); } } ?> </body> </html>

    • ベストアンサー
    • PHP