新手PHP程序员在这里(如果我甚至可以自称那个)。我目前正在研究一种循环XML文档的方法,以获取不包含特定关键字的子对象的每个实例,然后显示结果。我能够执行前面提到的但只能找到第一个子对象。
示例关注...
示例XML 以下可能有多个实例,我试图从每个不包含“Flood”的实例中获取<title>
子元素“或”没有活跃的手表,警告或建议“。
<entry>
<id>http://alerts.weather.gov/cap/wwaatmget.php?x=OHC095&y=0</id>
<updated>2013-04-16T20:00:01+00:00</updated>
<author>
<name>w-nws.webmaster@noaa.gov</name>
</author>
<title>There are no active watches, warnings or advisories</title>
<link href='http://alerts.weather.gov/cap/wwaatmget.php?x=OHC095&y=0'/>
</entry>
变量
//Lucas Co. Weather
$xml_string = file_get_contents("../../cache/weather_alerts-lucas.xml");
$weather_alerts_lucas = simplexml_load_string($xml_string);
$lucas_alert = ($weather_alerts_lucas->entry->title);
$no_alert =('There are no active watches, warnings or advisories');
显示结果 第一个if语句确定是否应该有滚动条,第二个if语句确定特定的县是否应该显示信息(有多个县但是我我只是为了简单而在这里展示一个。
if ("$lucas_alert"=="$no_alert" || fnmatch("*Flood*", $lucas_alert))
{
//Do Nothing.
} else {
echo "<div id='emergency_bar'>";
echo "<span class='scroll_font' ... ...'>";
if ("$lucas_alert"=="$no_alert" || fnmatch("*Flood*", $lucas_alert))
{
//Do Nothing.
} else {
echo "Lucas Co. - " . $lucas_alert . " // ";
}
echo "</span>";
echo "</div>";
}
如果我按照上面的方式进行操作,它只会获取第一个结果,即使它抓取了<title>
的多个实例,如果其中一个实例中有“Flood”字样,它也不会显示任何内容它
提前致谢。我不是在寻找有人为我编写代码,只是为了某个方向。
答案 0 :(得分:1)
$xml = simplexml_load_string($x); // XML in $x
$no = "There are no active watches, warnings or advisories";
foreach ($xml->xpath("//title") as $title) {
if ($title <> $no && strpos($title,"Flood") === false) echo "$title<br />";
}