2012-01-27 41 views
2

ここに示したPHPコードで以下のXMLを解析しようとしていますが、実行時に空白の画面が表示されてしまいます。私は同様の質問や他の同様の回答のstackoverflowを見回してきましたが、私はまだそれを動作させることはできません。ここでPHPでXMLを解析するにはどうすればよいですか?

<?php 
    $url = 'xml-file.xml'; 
    $xml = simplexml_load_file($url); 

    // get first book title 
    $title=$xml->entry[0]->name; 
    // show title 
    echo $title; 
    echo '<br/>'; 
    // get second book title 
    $title=$xml->entry[1]->name; 
    // show title 
    echo $title; 
    echo '<br/>'; 
    ?> 

XMLです:

<?xml version="1.0" encoding="UTF-8"?> 
    <feed gd:kind="shopping#products" gd:etag="&quot;lm_25heFT8yiumci9EH1kItJBpg/bXZf0ylJ3aJceGcE1I8C1fJbzgo&quot;" xmlns="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:s="http://www.google.com/shopping/api/schemas/2010"> 
    <id>tag:google.com,2010:shopping/products</id> 
    <updated>2012-01-27T13:41:20.177Z</updated> 
    <title>Shopping Products</title> 
    <generator version="v1" uri="https://www.googleapis.com/shopping/search/">Search API for Shopping</generator> 
    <link rel="alternate" type="text/html" href="https://www.googleapis.com/shopping/search/"/> 
    <link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="https://www.googleapis.com/shopping/search/v1/public/products?alt=atom"/> 
    <link rel="self" type="application/atom+xml" href="https://www.googleapis.com/shopping/search/v1/public/products?country=US&amp;q=digital+camera&amp;alt=atom&amp;startIndex=1&amp;maxResults=25"/> 
    <link rel="next" type="application/atom+xml" href="https://www.googleapis.com/shopping/search/v1/public/products?country=US&amp;q=digital+camera&amp;alt=atom&amp;startIndex=26&amp;maxResults=25"/> 
    <link rel="previous" type="application/atom+xml"/> 
    <openSearch:totalResults>6446790</openSearch:totalResults> 
    <openSearch:startIndex>1</openSearch:startIndex> 
    <openSearch:itemsPerPage>25</openSearch:itemsPerPage> 


    <entry gd:kind="shopping#product">> 
     <id>tag:google.com,2010:shopping/products/2860562/9400569674928563633</id> 
     <author> 
     <name>Amazon.com</name> 
     </author> 
     <published>2010-08-19T05:50:21.000Z</published> 
     <updated>2012-01-26T23:54:26.000Z</updated> 
     <title>Canon powershot s95 10 mp digital camera with 3.8x wide angle optical image   stabilized zoom and 3.0-inch lcd</title> 
     <content type="text">desc</content> 
     <link rel="alternate" type="text/html" href="http://rads.stackoverflow.com/amzn/click/B003ZSHNGS"/> 
     <link rel="self" type="application/atom+xml" href="https://www.googleapis.com/shopping/search/v1/public/products/2860562/gid/9400569674928563633?alt=atom"/> 
     <s:product> 
     <s:googleId>9400569674928563633</s:googleId> 
     <s:author> 
     <s:name>Amazon.com</s:name> 
     <s:accountId>2860562</s:accountId> 
     </s:author> 
     <s:creationTime>2010-08-19T05:50:21.000Z</s:creationTime> 
     <s:modificationTime>2012-01-26T23:54:26.000Z</s:modificationTime> 
     <s:country>US</s:country> 
     <s:language>en</s:language> 
     <s:title>Canon powershot s95 10 mp digital camera with 3.8x wide angle optical image stabilized zoom and 3.0-inch lcd</s:title> 
     <s:description>desc</s:description> 
     <s:link>http://www.amazon.com/Canon-PowerShot-S95-Stabilized-3-0-Inch/dp/B003ZSHNGS</s:link> 
     <s:brand>Canon</s:brand> 
     <s:condition>new</s:condition> 
     <s:gtin>00013803126556</s:gtin> 
     <s:gtins> 
     <s:gtin>00013803126556</s:gtin> 
     </s:gtins> 
     <s:inventories> 
     <s:inventory channel="online" availability="inStock"> 
     <s:price shipping="0.0" currency="USD">340.41</s:price> 
     </s:inventory> 
     </s:inventories> 
     <s:images> 
     <s:image link="http://ecx.images-amazon.com/images/I/519z3AjKzHL._SL500_AA300_.jpg"/> 
     </s:images> 
     </s:product> 
    </entry> 

    <entry gd:kind="shopping#product"> 
     <id>tag:google.com,2010:shopping/products/2860562/12997829348635087420</id> 
     <author> 
     <name>Amazon.com</name> 
     </author> 
     <published>2010-09-14T13:18:12.000Z</published> 
     <updated>2012-01-26T23:07:30.000Z</updated> 
     <title>Canon g12 10 mp digital camera with 5x optical image stabilized zoom and 2.8 inch vari-angle lcd</title> 
     <content type="text">desc</content> 
     <link rel="alternate" type="text/html" href="http://rads.stackoverflow.com/amzn/click/B0041RSPRS"/> 
     <link rel="self" type="application/atom+xml" href="https://www.googleapis.com/shopping/search/v1/public/products/2860562/gid/12997829348635087420?alt=atom"/> 
     <s:product> 
     <s:googleId>12997829348635087420</s:googleId> 
     <s:author> 
     <s:name>Amazon.com</s:name> 
     <s:accountId>2860562</s:accountId> 
     </s:author> 
     <s:creationTime>2010-09-14T13:18:12.000Z</s:creationTime> 
     <s:modificationTime>2012-01-26T23:07:30.000Z</s:modificationTime> 
     <s:country>US</s:country> 
     <s:language>en</s:language> 
     <s:title>Canon g12 10 mp digital camera with 5x optical image stabilized zoom and 2.8 inch vari-angle lcd</s:title> 
     <s:description>desc</s:description> 
     <s:link>http://www.amazon.com/Canon-G12-Digital-Stabilized-Vari-   Angle/dp/B0041RSPRS</s:link> 
     <s:brand>Canon</s:brand> 
     <s:condition>new</s:condition> 
     <s:gtin>00013803126815</s:gtin> 
     <s:gtins> 
     <s:gtin>00013803126815</s:gtin> 
     </s:gtins> 
     <s:inventories> 
     <s:inventory channel="online" availability="inStock"> 
      <s:price shipping="0.0" currency="USD">395.95</s:price> 
     </s:inventory> 
     </s:inventories> 
     <s:images> 
     <s:image link="http://ecx.images-amazon.com/images/I/516mn5voF0L._SL500_AA300_.jpg"/> 
     </s:images> 
     </s:product> 
     </entry> 


    </feed> 
+0

エラーログで手がかりを確認しましたか? –

+0

私はあなたの質問でregexenを一度言及していないことを賞賛します。 – deceze

+0

「まだうまく動作しない」とは何か - エラーメッセージが表示されますか?どのような出力を期待していますか?どのようなアウトプットを手に入れますか? – symcbean

答えて

6

私は著者の名前を見ないこの場所

$title = $xml->entry[1]->name; 

でXMLでnameが表示されていない。

$title = $xml->entry[1]->author->name; 

タイトルが表示されます

$title = $xml->entry[1]->title; 

これはおそらくあなたが探しているものです。それ以外の場合は、以下のようにしてデバッグの目的ですべてにアクセスする方法を見てください。

echo '<pre>'; 
print_r($xml->entry[1]); 
echo '</pre>'; 
-1

私はいつも別のDOMパーサーを使用して、PHPで作業しています。 xml2arrayはその1つです。

関連する問題