ソロツーリングと気ままな旅ホームソロツーリングと気ままな旅  >  旅と気ままなフォーラム  >  XOOPS、パソコン関連  >  XOOPS関連フォーラム  >  PHP SimpleXML のXPathを利用してデータを取り出す

PHP SimpleXML のXPathを利用してデータを取り出す

  • ここでは新たな話題の追加投稿はできません。
  • ここではゲスト投稿が禁止されています

投稿ツリー




前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2014/8/17 11:19 | 最終変更
タツ  管理人   投稿数: 2267
XOOPSのホームページとは直接的には関係はありませんが、ここに記載します。

全く同じPHPスクリプトプログラムをローカルサーバーで問題なく稼働するのを確認した後、レンタルサーバーにアップし稼働させた所、途中、各ブラウザで「接続がリセットされました」「このページは表示されません」「データを受信していません」など表示は違えど、接続ができなくなる旨のエラーが発生しました。 ローカルサーバーもレンタルサーバーもApacheのバージョンは違いますが、PHPのバージョンは5.25で同じです。

時間をかけ、原因を探った所、PHP SimpleXML のXPathのローカルパスに問題があることが分かりました。

以下を例に示します。

--------------------------------------
<?php
$xml = simplexml_load_string(
'<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns="">
<channel> 
 <title>Search Results</title>
 <description>Processing time: 30 ms</description> 
 <item> 
 <servType>AAA</servType>
 <guid>BBB</guid>
 <images>
    <imageSet> 
    <image>Aimage</image> 
    <image>Bimage</image>     
    <image>Cimage</image>
    </imageSet> 
 </images> 
 </item>
</channel>
</rss>');

//channelの各要素を取り出す場合
$found1 = $xml->xpath('/rss/channel');
//print_r($found1);

//Aimageを取り出す場合
$found2 = $xml->xpath('/rss/channel/item/images/imageSet/image');
echo($found2[0][0]);
?>

因みに上記コードをテキストエディターに貼り付け、xmltest.phpとしてローカルサーバーにセーブし稼働させると(例 localhost/xmltest.php)「Aimage」が出力されます。ところがレンタルサーバーでは接続エラーが発生します。

ここで、xpathのローカルパスの最後に[1]を追加し変更します。

//channelの各要素を取り出す場合
$found1 = $xml->xpath('/rss/channel[1]');
//print_r($found1);

//Aimageを取り出す場合
$found2 = $xml->xpath('/rss/channel/item/images/imageSet/image[1]');
echo($found2[0][0]);
------------------------------------

普通、配列の最初は[0]から始まりますが、xpathは[1]から始まります。たったこれだけのことでエラーが解除され、稼働するようになりました。

ただ、レンタルサーバーも様々なので、全てに当てはまるとは思いません。1つの参考記事として掲載しました。

投票数:15 平均点:5.33

  条件検索へ


旅と気ままなフォーラム新着投稿

旅と気ままなフォーラムメニュー

欲しい商品が必ず見つかるメジャーなネットショップ

このサイト内の検索

オンライン状況

13 人のユーザが現在オンラインです。 (1 人のユーザが 旅と気ままなフォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 13

もっと...

Facebook,RSSリンク表示


RSSicon 最新記事のRSS