2013-05-08 5 views
0

У меня нет проблем с анализом различных типов XML-фидов и методов для каждой отдельной ситуации. Я столкнулся с одним, я не знаком с тем, как его атаковать.Анализ атрибута элемента XML на основе vaule

В корме есть атрибуты элементов, которые не имеют большого значения, но некоторые атрибуты элемента подобны этому, когда вывод основан на значении.

tornado="0" funnelcloud="0" wallcloud="0" rotation="0" hail="1" wind="0" flood="0" flashflood="0" other="0" 

Так что в основном, если есть 1, он будет выводить эти данные. Итак, как мне разобрать, чтобы он выводил перечисленные? Думаю, мне нужен массив? Если да, то какие-нибудь примеры, чтобы я мог получить идею?

Вот как я разбираю данные, которые отлично работают. Легкий и простой.

$data = "http://www.spotternetwork.org/data.php"; 
$xml = simplexml_load_file($data); 

foreach($xml->report as $report){ 

    $date = $report['stamp']; 
    $narrative = $report['narrative']; 
    $loc = $report['city1']; 
    $tz = $report['tz']; 

    $time = strtotime($date.' UTC'); 
    $dateInLocal = date("D g:i a", $time); 

-Спасибо

+0

Я открыл 'http: // www.spotternetwork.org/data.php' и посмотрел выход xml, и вы это делаете, тогда в чем проблема? – NullPointer

+0

Это разные данные, которые вы видите. Это отчеты о позициях, а не штормовые отчеты. Отчеты о штормах будут внизу. Посмотрите внимательно, вы не увидите атрибутов, которые я опубликовал, потому что нет отчетов о шторме. – Texan78

+0

Хорошо. Таким образом, вы имеете в виду, что хотите добавить элемент 'store report' like' ' в вашем XML, и вы хотите добавить его на основе значения атрибута '@ hail', это правильно? – NullPointer

ответ

0

Вам нужно указать, что вы используете для разбора XML, но при условии, что это SimpleXML, вы могли бы сделать что-то вроде:

$attrs = []; 
foreach($report->attributes() as $a => $b) { 
    $attrs[$a] = $b; 
} 

$value = array_search('1', $attrs); 

Переключатель:

switch ($value) { 
    case 'hail': 
     echo "hail stuff"; 
     break; 
    case 'tornado': 
     echo "tornado stuff"; 
     break; 
} 
+0

Извините, я не знал, нужно ли это или нет. Я добавил его в свой оригинальный пост. Таким образом, я повторяю атрибут града, и он вернулся 1. Поэтому, я думаю, мне нужно что-то вроде, если град 1 показать град торнадо 1 показать торнадо и т. Д. Я еще не испытал с php, но чтобы понять логику этого, поскольку это не то, что я видел раньше. – Texan78

+0

Я немного изменил свой код. в принципе, да, в моем ответе вам понадобится переключатель. –

+0

Спасибо, я попробую. На данный момент для меня нет входных данных для тестирования. – Texan78

Смежные вопросы