2010-04-20 92 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'是问题。