2010-04-20 91 views
0

我在使用SimpleXML解析這段XML時遇到了一些問題。總是隻有一個Series元素,並且下面有可變數量的Episode元素。我想解析XML,以便我可以將Series數據存儲在一個表中,並將所有Episode數據存儲在另一個表中。使用SimpleXML提取某些XML元素

XML:

<Data> 
    <Series> 
     <id>80348</id> 
     <Genre>|Action and Adventure|Comedy|Drama|</Genre> 
     <IMDB_ID>tt0934814</IMDB_ID> 
     <SeriesID>68724</SeriesID> 
     <SeriesName>Chuck</SeriesName> 
     <banner>graphical/80348-g.jpg</banner> 
    </Series> 
    <Episode> 
     <id>935481</id> 
     <Director>Robert Duncan McNeill</Director> 
     <EpisodeName>Chuck Versus the Third Dimension 2D</EpisodeName> 
     <EpisodeNumber>1</EpisodeNumber> 
     <seasonid>27984</seasonid> 
     <seriesid>80348</seriesid> 
    </Episode> 
    <Episode> 
     <id>935483</id> 
     <Director>Robert Duncan McNeill</Director> 
     <EpisodeName>Buy More #15: Employee Health</EpisodeName> 
     <EpisodeNumber>2</EpisodeNumber> 
     <seasonid>27984</seasonid> 
     <seriesid>80348</seriesid> 
    </Episode> 
</Data> 

當我試圖通過情節元素訪問僅僅是第一系列元素和子節點,或者只迭代這是行不通的。我也嘗試在SimpleXML中使用DOMDocument,但無法完成這項工作。

PHP代碼:

<?php 
    if(file_exists('en.xml')) 
    { 
     $data = simplexml_load_file('en.xml'); 
     foreach($data as $series) 
     { 
      echo 'id: <br />' . $series->id; 
      echo 'imdb: <br />' . $series->IMDB_ID; 
     } 
    } 
?> 

輸出:

id:80348 
imdb:tt0934814 
id:935481 
imdb: 
id:1534641 
imdb: 

回答

0

我剛剛發現了愚蠢的錯誤,我做。

的PHP代碼應該是這樣的:

<?php 
    if(file_exists('en.xml')) 
    { 
     $data = simplexml_load_file('en.xml'); 
     foreach($data->Series as $series) 
     { 
      echo 'id: <br />' . $series->id; 
      echo 'imdb: <br />' . $series->IMDB_ID; 
     } 
    } 
?> 

的我第一次嘗試這種情況(沒有工作),我使用;

$data->series as $series 

所以這是一個資本'S'是問題。