2012-05-29 2 views
0

PHP 루프를 통해 구문 분석하려고하는 날씨 xml이 있습니다. 문제는 내가이 노드를 드릴 다운 할 수
URL이있는 노드에 액세스하는 방법은 무엇입니까?

<aws:weather xmlns:aws="http://www.aws.com/aws> 

를 제외한 모든 노드에 액세스 할 수 있음이다. 그것은 URL 때문입니까?

<?php 
$html = ""; 
$url = "http://i.wxbug.net/REST/SP/" . 
     "getLiveWeatherRSS.aspx?api_key=sdfgdsgd5454&stationid=SLNAS"; 
$xml = simplexml_load_file($url); 
for ($i = 0; $i < 10; $i++) { 
$aws:station = $xml->channel->aws:weather->aws:ob[$i]->aws:station; 
$html .= "<h3>$aws:station</h3>"; 
} 
echo $html; 
?> 

이 문제는 AWS 네임 스페이스에 의해 발생

<rss xmlns:georss="http://www.georss.org/georss" version="2.0"> 
<channel> 
<title>Observations from Salinas, CA - USA</title> 
<link>...</link> 
<description>...</description> 
<language>en-us</language> 
<lastBuildDate>Tue, 29 May 2012 17:00:00 GMT</lastBuildDate> 
<ttl>60</ttl> 
<aws:weather xmlns:aws="http://www.aws.com/aws"> 
<aws:api version="2.0"/> 
<aws:WebURL>...</aws:WebURL> 
<aws:InputLocationURL>...</aws:InputLocationURL> 
<aws:ob> 
<aws:ob-date>...</aws:ob-date> 
<aws:requested-station-id>SLNAS</aws:requested-station-id> 
<aws:station-id>KSNS</aws:station-id> 
<aws:station>Salinas Municipal Airport</aws:station> 
<aws:city-state zipcode="93905">Salinas, CA</aws:city-state> 
<aws:country>USA</aws:country> 
<aws:latitude>36.6633338928223</aws:latitude> 
<aws:longitude>-121.608055114746</aws:longitude> 
<aws:site-url/> 
<aws:aux-temp units="&deg;F">0</aws:aux-temp> 
<aws:aux-temp-rate units="&deg;F">-52.9</aws:aux-temp-rate> 
<aws:current-condition icon="http://deskwx.weatherbug.com/images/Forecast/icons 
/cond000.gif">Clear</aws:current-condition> 
<aws:dew-point units="&deg;F">45</aws:dew-point> 
<aws:elevation units="ft">66</aws:elevation> 
<aws:feels-like units="&deg;F"/> 
<aws:gust-time>...</aws:gust-time> 
<aws:gust-direction>WNW</aws:gust-direction> 
<aws:gust-direction-degrees>281</aws:gust-direction-degrees> 
<aws:gust-speed units="mph">N/A</aws:gust-speed> 
<aws:humidity units="%">60</aws:humidity> 
<aws:humidity-high units="%">6</aws:humidity-high> 
<aws:humidity-low units="%">6</aws:humidity-low> 
<aws:humidity-rate>0</aws:humidity-rate> 
<aws:indoor-temp units="&deg;F">0</aws:indoor-temp> 
<aws:indoor-temp-rate units="&deg;F">0</aws:indoor-temp-rate> 
<aws:light>0</aws:light> 
<aws:light-rate>0</aws:light-rate> 
<aws:moon-phase moon-phase-img="http://api.wxbug.net/images/moonphase 
/mphase09.gif">-61</aws:moon-phase> 
<aws:pressure units=""">30.08</aws:pressure> 
<aws:pressure-high units=""">30.08</aws:pressure-high> 
<aws:pressure-low units=""">30.05</aws:pressure-low> 
<aws:pressure-rate units=""/h">0</aws:pressure-rate> 
<aws:rain-month units=""">0</aws:rain-month> 
<aws:rain-rate units=""/h">0</aws:rain-rate> 
<aws:rain-rate-max units=""/h">0</aws:rain-rate-max> 
<aws:rain-today units=""">0</aws:rain-today> 
<aws:rain-year units=""">0</aws:rain-year> 
<aws:temp units="&deg;F">59</aws:temp> 
<aws:temp-high units="&deg;F">59</aws:temp-high> 
<aws:temp-low units="&deg;F">51</aws:temp-low> 
<aws:temp-rate units="&deg;F/h">0</aws:temp-rate> 
<aws:sunrise> 
<aws:year number="2012"/> 
<aws:month number="5" text="May" abbrv="May"/> 
<aws:day number="29" text="Tuesday" abbrv="Tue"/> 
<aws:hour number="5" hour-24="05"/> 
<aws:minute number="50"/> 
<aws:second number="01"/> 
<aws:am-pm abbrv="AM"/> 
<aws:time-zone offset="-7" text="Pacific Daylight Time (USA)" abbrv="PDT"/> 
</aws:sunrise> 
<aws:sunset> 
<aws:year number="2012"/> 
<aws:month number="5" text="May" abbrv="May"/> 
<aws:day number="29" text="Tuesday" abbrv="Tue"/> 
<aws:hour number="8" hour-24="20"/> 
<aws:minute number="18"/> 
<aws:second number="10"/> 
<aws:am-pm abbrv="PM"/> 
<aws:time-zone offset="-7" text="Pacific Daylight Time (USA)" abbrv="PDT"/> 
</aws:sunset> 
<aws:wet-bulb units="&deg;F">51.602</aws:wet-bulb> 
<aws:wind-speed units="mph">N/A</aws:wind-speed> 
<aws:wind-speed-avg units="mph">N/A</aws:wind-speed-avg> 
<aws:wind-direction>WNW</aws:wind-direction> 
<aws:wind-direction-degrees>279</aws:wind-direction-degrees> 
<aws:wind-direction-avg>WNW</aws:wind-direction-avg> 
</aws:ob> 
</aws:weather> 
<image>...</image> 
<item>...</item> 
</channel> 
</rss> 

답변

1

는 XML은 다음과 같습니다 나는 ultimatly이 내가 가지고있는 PHP이다이 노드를

<aws:station> Salinas Municipal Airport <aws:station> 

에 접근 할 필요가 XML 문서

<aws:weather xmlns:aws="http://www.aws.com/aws"> 

당신은 그 접근보다, 네임 스페이스에 속한 모든 노드를 가져 오도록 childeren 방법을 사용할 수 있습니다.

당신은 http://www.sitepoint.com/simplexml-and-namespaces/

+0

다양한 정보 덕분에 많이에서보다 자세한 문제 설명을 찾을 수 있습니다. 나는 이것을 발견하지 못했을 것이다. 다시 한번 감사드립니다. – mikenichols

관련 문제