简体   繁体   中英

Using XPath with SimpleXML in PHP

$xml = new SimpleXMLElement(getpage('http://api.themoviedb.org/2.1/Genres.getList/en/xml/APIKEY'));
$genres = $xml->xpath('/opensearchdescription/genres/genre');
foreach($genres as $genre)
{
    echo $genre->id;
}

I'm not sure why it isn't working :( (yes APIKEY is replaced in my code)

The XML is:

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
  <opensearch:Query searchTerms=""/>
  <opensearch:totalResults>30</opensearch:totalResults>
  <genres>
    <translated>true</translated>
    <genre name="Action">
      <id>28</id>

      <url>http://www.themoviedb.org/genre/action</url>
    </genre>
    <genre name="Adventure">
      <id>12</id>
      <url>http://www.themoviedb.org/genre/adventure</url>
    </genre>
    <genre name="Animation">

      <id>16</id>
      <url>http://www.themoviedb.org/genre/animation</url>
    </genre>
    <genre name="Comedy">
      <id>35</id>
      <url>http://www.themoviedb.org/genre/comedy</url>
    </genre>

    <genre name="Crime">
      <id>80</id>
      <url>http://www.themoviedb.org/genre/crime</url>
    </genre>
    <genre name="Disaster">
      <id>105</id>
      <url>http://www.themoviedb.org/genre/disaster</url>

    </genre>
    <genre name="Documentary">
      <id>99</id>
      <url>http://www.themoviedb.org/genre/documentary</url>
    </genre>
    <genre name="Drama">
      <id>18</id>

      <url>http://www.themoviedb.org/genre/drama</url>
    </genre>
    <genre name="Eastern">
      <id>82</id>
      <url>http://www.themoviedb.org/genre/eastern</url>
    </genre>
    <genre name="Erotic">

      <id>2916</id>
      <url>http://www.themoviedb.org/genre/erotic</url>
    </genre>
    <genre name="Family">
      <id>10751</id>
      <url>http://www.themoviedb.org/genre/family</url>
    </genre>

    <genre name="Fan Film">
      <id>10750</id>
      <url>http://www.themoviedb.org/genre/fan-film</url>
    </genre>
    <genre name="Fantasy">
      <id>14</id>
      <url>http://www.themoviedb.org/genre/fantasy</url>

    </genre>
    <genre name="Film Noir">
      <id>10753</id>
      <url>http://www.themoviedb.org/genre/film-noir</url>
    </genre>
    <genre name="History">
      <id>36</id>

      <url>http://www.themoviedb.org/genre/history</url>
    </genre>
    <genre name="Holiday">
      <id>10595</id>
      <url>http://www.themoviedb.org/genre/holiday</url>
    </genre>
    <genre name="Horror">

      <id>27</id>
      <url>http://www.themoviedb.org/genre/horror</url>
    </genre>
    <genre name="Music">
      <id>10402</id>
      <url>http://www.themoviedb.org/genre/music</url>
    </genre>

    <genre name="Musical">
      <id>22</id>
      <url>http://www.themoviedb.org/genre/musical</url>
    </genre>
    <genre name="Mystery">
      <id>9648</id>
      <url>http://www.themoviedb.org/genre/mystery</url>

    </genre>
    <genre name="Neo-noir">
      <id>10754</id>
      <url>http://www.themoviedb.org/genre/neo-noir</url>
    </genre>
    <genre name="Road Movie">
      <id>1115</id>

      <url>http://www.themoviedb.org/genre/road-movie</url>
    </genre>
    <genre name="Romance">
      <id>10749</id>
      <url>http://www.themoviedb.org/genre/romance</url>
    </genre>
    <genre name="Science Fiction">

      <id>878</id>
      <url>http://www.themoviedb.org/genre/science-fiction</url>
    </genre>
    <genre name="Short">
      <id>10755</id>
      <url>http://www.themoviedb.org/genre/short</url>
    </genre>

    <genre name="Sport">
      <id>9805</id>
      <url>http://www.themoviedb.org/genre/sport</url>
    </genre>
    <genre name="Suspense">
      <id>10748</id>
      <url>http://www.themoviedb.org/genre/suspense</url>

    </genre>
    <genre name="Thriller">
      <id>53</id>
      <url>http://www.themoviedb.org/genre/thriller</url>
    </genre>
    <genre name="War">
      <id>10752</id>

      <url>http://www.themoviedb.org/genre/war</url>
    </genre>
    <genre name="Western">
      <id>37</id>
      <url>http://www.themoviedb.org/genre/western</url>
    </genre>
  </genres>

</OpenSearchDescription>

XML is case sensitive - OpenSearchDescription is not the same as opensearchdescription .

Try this:

$genres = $xml->xpath('/OpenSearchDescription/genres/genre');

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM