好的,关于stackoverflow的第一个问题。
我有以下xml:
<movies>
<movie>
<cast>
<person name="Tim Johnson" character="" job="Director"/>
<person name="Avril Lavigne" character="Heather (voice)" job="Actor"/>
<person name="Omid Djalili" character="Tiger (voice)" job="Actor"/>
<person name="Karey Kirkpatrick" character="" job="Director"/>
</cast>
</movie>
</movies>
我像这样检索它:
<?php $xml_getinfo_result = new SimpleXMLElement(file_get_contents($tmdb_getinfo_result)); ?>
要获得演员表,我使用以下内容:
$i = 0;
while ($xml_getinfo_result->movies->movie->cast->person[$i]) {
$tmdb_actors = $xml_getinfo_result->movies->movie->cast->person[$i]->attributes()->name;
echo "<li>".$tmdb_actors."</li>";
$i++;
}
这给了我:
<li>Tim Johnson</li>
<li>Avril Lavigne</li>
<li>Omid Djalili</li>
<li>Karey Kirkpatrick</li>
但是,如果我只想显示工作为“演员”的人,我该怎么办?
答案 0 :(得分:0)
两种可能性:
第一个,您获得所有数据并且只显示actor:
$i = 0;
while ($xml_getinfo_result->movies->movie->cast->person[$i]) {
if ($xml_getinfo_result->movies->movie->cast->person[$i]->attributes()->job == "Actor") {
$tmdb_actors = $xml_getinfo_result->movies->movie->cast->person[$i]->attributes()->name;
echo "<li>".$tmdb_actors."</li>";
}
$i++;
}
第二个是仅解析作为actor的<person>
并显示所有结果。
答案 1 :(得分:0)
$i = 0;
while ($xml_getinfo_result->movies->movie->cast->person[$i]) {
$job = $xml_getinfo_result->movies->movie->cast->person[$i]->attributes()->job;
if ($job == 'Actor') {
$tmdb_actors = $xml_getinfo_result->movies->movie->cast->person[$i]->attributes()->name;
echo "<li>".$tmdb_actors."</li>";
}
$i++;
}
答案 2 :(得分:0)
您可以使用xpath:
$actorNodes = $xml_getinfo_result->xpath( '//person[@job="Actor"]' );
foreach( $actorNodes as $actorNode )
{
echo "<li>".$actorNode->attributes()->name."</li>";
}
答案 3 :(得分:0)
我将它放在一个foreach声明中
foreach ($xml_getinfo_result->movies->movie->cast->person as $id => $person) {
if ($person->attributes()->job === 'Actor') {
echo '<li>' . $person->attributes()->name . '</li>';
}
}
答案 4 :(得分:0)
你可以这样做:
$i = 0;
while ($xml_getinfo_result->movies->movie->cast->person[$i]) {
$tmdb_job = $xml_getinfo_result->movies->movie->cast->person[$i]->attributes()->job;
if($tmdb_job == 'Actor'){
$tmdb_name = $xml_getinfo_result->movies->movie->cast->person[$i]->attributes()->name;
echo "<li>".$tmdb_name."</li>";
}
$i++;
}