2017-10-22 15 views
0

私はPHPの初心者ですから、私はあなたの助けが必要です。私は以下のようなGoogleサービスフィードから情報を抽出する必要があります。PHPでGoogle XMLファイルを読む

私はsimplexml_load_fileを使用しようとしましたが、単純なforeachでは、単一の要素を分離する正しい方法を見つけることができません。

<xml version="1.0"> 
    <rss version="2.0" xmlns:g="http://base.google.com/ns/1.0"> 
     <channel> 
      <title>Title</title> 
      <description>Products Brand</description> 
      <link>http://www.website.com/</link> 
      <item> 
       <g:id>1111111</g:id> 
       <g:gtin>111111</g:gtin> 
       <title>Lorem ipsum dolor sit amet</title> 
       <description>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent in orci efficitur lorem aliquam iaculis non nec orci. Aliquam mattis suscipit nisi in faucibus. Nullam ex mauris, mollis at tellus at, pulvinar mollis orci.</description> 
       <g:google_product_category>Apparel &amp; Accessories &gt; Shoes</g:google_product_category> 
       <g:product_type>Women &gt; New Arrivals &gt; New Arrivals</g:product_type> 
       <link>http://www.brand.com/product.html</link> 
       <g:image_link>https://www.brand.com/image_00.png</g:image_link> 
       <g:additional_image_link>https://www.brand.com/image_00.png</g:additional_image_link> 
       <g:condition>new</g:condition> 
      </item> 
+0

この質問に実際のコードを追加して、試したこととそのエラーを表示する必要があります。 –

答えて

1

はXMLが少し間違っている、XMLは<?xml version="1.0"?>する必要があり、事前にありがとうと私は不足している任意の終了タグを追加しました。だから、ビットのいくつかを表示するためのコードが...

$xml = simplexml_load_file("NewFile.xml"); 

foreach ($xml->channel as $channel) { 
    foreach ($channel->item as $item){ 
     $title = (string)$item->title; 
     $link = (string)$item->link; 
     echo $title." => ".$link.PHP_EOL; 
    } 
} 

それはすべての<channel>要素と、その内側に各<item>要素の詳細については、foreachのためのforeachにやっているすべてのです。

+0

こんにちは@Nelel Ren、あなたの返信ありがとうございます。あなたはXMLが完成していないのは間違いない、私はちょうど例として最初の部分を貼り付けた。私はあなたのコードを試しましたが、出力がないページを受け取ったので、間違ったコード '<?xml version = "1.0"?>'の可能性はありますか? – Mark

+0

完全なバージョンを含める必要があるかもしれません - 時には名前空間などに起因することもありますが、文書全体を伝えることはできません(繰り返したものは削除できますが、構造が必要です) –