使用PHP SimpleXML提取某些XML元素

时间:2010-04-20 11:20:55

标签: php xml codeigniter simplexml

我在使用SimpleXML解析这段XML时遇到了一些问题。始终只有一个Series元素,以及可变数量的Episode元素。我想解析XML,以便将Series数据存储在一个表中,将所有Episode数据存储在另一个表中。

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>

当我尝试仅访问第一个Series元素和子节点,或者迭代Episode元素时,它不起作用。我也尝试将DOMDocument与SimpleXML一起使用,但根本无法使用它。

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:

1 个答案:

答案 0 :(得分: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'就是问题。

相关问题