2016-05-24 14 views
1

文字列からXMLをロードしようとしましたが、空のオブジェクトがあります。文字列からXMLをロードしています

<?php 
libxml_use_internal_errors(true); 
$xml = simplexml_load_string($myXMLData); 
if ($xml === false) { 
    echo "Failed loading XML: "; 
    foreach(libxml_get_errors() as $error) { 
     echo "<br>", $error->message; 
    } 
} else { 
    print_r($xml); 
    foreach($xml->{'reference:item'} as $item){ 
     echo $item->{'resource:local-description'}; 
    } 
} 
?> 

$myXMLData and complete Code

出力は: "にSimpleXMLElementオブジェクト()"。 エラーは発生しますが、オブジェクトはまだ空ですか?

+0

さて、どのような '$ myXMLData'は見えますか? – WillardSolutions

+0

http://pastebin.com/r9A43NLk – FlugRost

+0

あなたの前の質問で説明したように、1) 'print_r()'は成功してもあなたのXMLを出力しません2)名前空間のXMLであるため現在の構文が機能しません –

答えて

0

あなたとXMLをパースについてお読みください名前空間。通常のXMLとは大きく異なります。最初の反復として

、あなたのコードのelse一部は、このようなことができます:

} else 
    foreach($xml->children('reference', true) as $item) 
     if($item->getName() == 'item') 
      foreach($item->children('resource', true) as $desc)  
       if($desc->getName() == 'local-description') 
        echo $desc ."\n"; 

demo

0

それは働いているあなたは、にあなたのxml VARを変更する場合:

$myXMLData = ' 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<reference:reference 

$myXMLData = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<reference:reference 

それはおそらく遠い空のようにそれを取る

+0

私はすでに使用しています2番目のもの。最初の1つでは、このエラーが発生します。「XMLの読み込みに失敗しました: XML宣言はドキュメントの先頭にのみ許可されています」 – FlugRost

関連する問題