PHP SimpleXML のXPathを利用してデータを取り出す
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
1件表示
(全1件)
すべてのトピック一覧へ
投稿ツリー
- PHP SimpleXML のXPathを利用してデータを取り出す (タツ, 2014/8/17 11:19)
前の投稿
-
次の投稿
|
親投稿
-
子投稿なし
|
投稿日時 2014/8/17 11:19 | 最終変更
タツ
投稿数: 2448
XOOPSのホームページとは直接的には関係はありませんが、ここに記載します。
全く同じPHPスクリプトプログラムをローカルサーバーで問題なく稼働するのを確認した後、レンタルサーバーにアップし稼働させた所、途中、各ブラウザで「接続がリセットされました」「このページは表示されません」「データを受信していません」など表示は違えど、接続ができなくなる旨のエラーが発生しました。 ローカルサーバーもレンタルサーバーもApacheのバージョンは違いますが、PHPのバージョンは5.25で同じです。
時間をかけ、原因を探った所、PHP SimpleXML のXPathのローカルパスに問題があることが分かりました。
以下を例に示します。
--------------------------------------
因みに上記コードをテキストエディターに貼り付け、xmltest.phpとしてローカルサーバーにセーブし稼働させると(例 localhost/xmltest.php)「Aimage」が出力されます。ところがレンタルサーバーでは接続エラーが発生します。
ここで、xpathのローカルパスの最後に[1]を追加し変更します。
------------------------------------
普通、配列の最初は[0]から始まりますが、xpathは[1]から始まります。たったこれだけのことでエラーが解除され、稼働するようになりました。
ただ、レンタルサーバーも様々なので、全てに当てはまるとは思いません。1つの参考記事として掲載しました。
全く同じ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つの参考記事として掲載しました。
投票数:17
平均点:4.71
1件表示
(全0件)
すべてのトピック一覧へ