2016-08-01 10 views
2

私はxpathで遊んで始めました。xpath出力を使用するPHP

私はTVDBのAPIを使用して、私はエピソード番号=何かとシーズン番号が何かに等しいすべてのエピソードの詳細情報を取得したい(質問に対して短く)次のXML

<Data> 
    <Episode> 
     <id>4762752</id> 
     <EpisodeName>I.</EpisodeName> 
     <EpisodeNumber>1</EpisodeNumber> 
     <SeasonNumber>1</SeasonNumber> 
    </Episode> 
    <Episode> 
     <id>4762756</id> 
     <EpisodeName>II.</EpisodeName> 
     <EpisodeNumber>2</EpisodeNumber> 
     <SeasonNumber>1</SeasonNumber> 
    </Episode> 
</Data> 

を持っています。

私はxpathクエリが正しいと思いますが、後でデータにアクセスすることはできません。

これまでの私のコード:

$tvdbSeriesData = simplexml_load_file($tvdbSeriesFeed); 

$tvdbEpisodes = $tvdbSeriesData->xpath("//Data/Episode[SeasonNumber/text() = '$seasonNumber'][EpisodeNumber/text() = '$episodeNumber']"); 

echo $tvdbEpisodes->id; 

これは簡単です、誰かが正しい方向に私を投げたり、私が間違って何をやったか私に説明することができればこれは謝罪ので、XPathのと私の最初の試みでありますここに。

おかげ

+0

あなたがしますprint_r($ tvdbEpisodesを)しようとするとそれが正常に動作ように見えますが、 –

答えて

1

xpath機能があなたのXPathクエリの結果を返しますArray

$tvdbSeriesFeed = '<Data> 
    <Episode> 
     <id>4762752</id> 
     <EpisodeName>I.</EpisodeName> 
     <EpisodeNumber>1</EpisodeNumber> 
     <SeasonNumber>1</SeasonNumber> 
    </Episode> 
    <Episode> 
     <id>4762756</id> 
     <EpisodeName>II.</EpisodeName> 
     <EpisodeNumber>2</EpisodeNumber> 
     <SeasonNumber>1</SeasonNumber> 
    </Episode> 
</Data>'; 

$tvdbSeriesData = simplexml_load_string($tvdbSeriesFeed); 
$seasonNumber = 1; 
$episodeNumber = 1; 
$tvdbEpisodes = $tvdbSeriesData->xpath("//Data/Episode[SeasonNumber/text() = '$seasonNumber'][EpisodeNumber/text() = '$episodeNumber']"); 

echo $tvdbEpisodes[0]->id; // 4762752 

は、私が唯一の例が機能するための機能simplexml_load_stringを使用しました。

また、結果のvar_dumpことができます。

var_dump($tvdbEpisodes); 

ウィル出力:

array(1) { 
    [0] => 
    class SimpleXMLElement#3 (4) { 
    public $id => 
    string(7) "4762752" 
    public $EpisodeName => 
    string(2) "I." 
    public $EpisodeNumber => 
    string(1) "1" 
    public $SeasonNumber => 
    string(1) "1" 
    } 
} 
関連する問題