以下を確認してください。ローカルおよびリモートの XML からデータをロード、取得、および出力する方法について 2 つの例を作成しましたが、何か忘れている可能性があります。
また、XML ドキュメントの構文が 100% 正しいかどうかを確認することもお勧めします。
このツールを使用して XML を検証できます。
http://www.w3schools.com/xml/xml_validator.asp
ローカル XML の読み込み、データの取得と出力:
<?php
// xml example with namespaces
$xml = '<market
xmlns:m="http://mymarket.com/">
<m:fruit>
<m:type>
<m:name from="US">Apples</m:name>
<m:name>Bananas</m:name>
</m:type>
<m:sell>
<m:date>2012-06-24</m:date>
</m:sell>
</m:fruit>
</market>';
// load the xml
$elems = simplexml_load_string($xml);
// evaluate if not null
if($elems != null){
// declare the namespaces
$ns = array(
'm' => "http://mymarket.com/"
);
// for each td inside tr
foreach ($elems->children($ns['m'])->fruit->type->name as $item) {
echo $item->attributes()->from;
echo ',';
echo $item;
}
// get just an element without using loop
echo ','.$elems->children($ns['m'])->fruit->sell->date;
// final output is: US,Apples,Bananas,2012-06-24
}
?>
リモート XML の読み込み、データの取得と出力:
<?php
$url = "http://www.mymarket.com/products.xml";
// evaluate if not null
if(getXml($url) != null){
// declare the namespaces
$ns = array(
'm' => "http://mymarket.com/"
);
// for each td inside tr
foreach ($elems->children($ns['m'])->fruit->type->name as $item) {
echo $item->attributes()->from;
echo ',';
echo $item;
}
// get just an element without using loop
echo ','.$elems->children($ns['m'])->fruit->sell->date;
// final output is: US,Apples,Bananas,2012-06-24
}
function getXml($url)
{
$xml = @file_get_contents($url);
// If page not found and server has a 404 error redirection, use strpos to look through the $xml
if($xml == false || strpos($xml,'404') == true){
return null;
}
else{
$elems = simplexml_load_string($xml);
return $elems;
}
}
?>