Чтение нескольких элементов из XML-канала с '-' в именах элементов - PullRequest
0 голосов
/ 10 мая 2011

Я пытаюсь прочитать элементы XML, в имени которых есть "-".Фид можно найти по адресу http://forecast.weather.gov/MapClick.php?lat=42.19774&lon=-121.81797&FcstType=dwml. В моем последнем вопросе я просто пытался прочитать любой из них. чтение канала XML с '-' в некоторых именах элементов Теперь я пытаюсь прочитать конкретный (отличный от первого), и снова получаю тупик.

Это будетдостаньте мне первый тайм-макет и первый старт-срок-время.

$time = $xml->data->{'time-layout'}->{'start-valid-time'};

Я после второго тайм-макета и хочу прочитать атрибуты элементов start-valid-time.

Ниже я нашел способ, который работает.То, что я сделал ниже, не может быть правильным способом для этого.Как человеку обычно поступать так?

Спасибо.

     $time = $xml->data->{'time-layout'};
     $time2= $time[1]->{'start-valid-time'};
     $count= 14;
      for ($i = 0; $i <=$count ; $i++)
      {
         echo $time2[$i]->attributes();
         print "<br>\n";
      }

Ответы [ 2 ]

0 голосов
/ 10 мая 2011

То, что вы делаете, правильно. Вы можете сократить до

$dwml = simplexml_load_file('http://…');
foreach ($dwml->data->{'time-layout'}[1]->{'start-valid-time'} as $time) {
    echo $time;
}

или используйте XPath

$dwml = simplexml_load_file('http://…');
foreach ($dwml->xpath('/dwml/data/time-layout[2]/start-valid-time') as $time) {
    echo $time;
}
0 голосов
/ 10 мая 2011

Для запросов этого типа Изобретена * XPath

...