Помогите пожалуйста распарсить XML

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Smolalex
Сообщения: 110
Зарегистрирован: Вт апр 29, 2014 9:16 pm
Благодарил (а): 7 раз
Поблагодарили: 13 раз

Помогите пожалуйста распарсить XML

Сообщение Smolalex » Пт ноя 17, 2017 8:08 pm

СпойлерПоказать
<timetable station="Augsburg Hbf">
<s id="8807096385245091205-1711170803-8">
<tl f="N" t="p" o="07" c="RE" n="57014"/>
<ar pt="1711170846" pp="5" wings="-6266819635136457113-1711170803" ppth="München Hbf|München-Pasing|Mering|Mering-St Afra|Kissing|Augsburg-Hochzoll|Augsburg Haunstetterstraße"/>
<dp pt="1711170854" pp="5" ppth="Augsburg-Oberhausen|Gersthofen|Gablingen|Langweid(Lech)|Herbertshofen|Meitingen|Westendorf|Nordendorf|Mertingen Bahnhof|Bäumenheim|Donauwörth"/>
</s>
<s id="6725347231257922010-1711170801-6">
<tl f="N" t="p" o="07" c="RB" n="57893"/>
<ar pt="1711170822" pp="501" ppth="Schwabmünchen|Bobingen|Inningen|Augsburg Messe|Augsburg Morellstr."/>
</s>
<s id="3285990615539938881-1711170716-4">
<tl f="F" t="p" o="80" c="IC" n="2097"/>
<ar pt="1711170805" pp="4" ppth="Ulm Hbf|Neu-Ulm|Günzburg"/>
<dp pt="1711170807" pp="4" ppth="München-Pasing|München Hbf"/>
</s>
<s id="-7184453857839759572-1711170727-3">
<tl f="F" t="p" o="80" c="ICE" n="612"/>
<ar pt="1711170800" pp="1" ppth="München Hbf|München-Pasing"/>
<dp pt="1711170803" pp="1" ppth="Ulm Hbf|Stuttgart Hbf|Mannheim Hbf|Frankfurt(M) Flughafen Fernbf|Siegburg/Bonn|Köln Hbf|Düsseldorf Hbf|Duisburg Hbf|Essen Hbf|Bochum Hbf|Dortmund Hbf"/>
</s>
нужна только информация из тега tl и dp
Smolalex
Сообщения: 110
Зарегистрирован: Вт апр 29, 2014 9:16 pm
Благодарил (а): 7 раз
Поблагодарили: 13 раз

Re: Помогите пожалуйста распарсить XML

Сообщение Smolalex » Пт ноя 17, 2017 10:55 pm

Спасибо, сам справился

$xmlObject = new SimpleXMLElement($xmlData);

$node = $xmlObject->children();
$count=count($node);
for($i = 0; $i < $count; ++$i) {
$ppth=$node[$i]->dp['ppth'];
if (strpos($ppth,'München Hbf')){
$otpr=$node[$i]->dp['pt'];
$pattern = '/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/i';
$replacement = '$3.$2.20$1 $4:$5';
$date = preg_replace($pattern, $replacement, $otpr);
$pt=$node[$i]->dp['pt'];
$pp=$node[$i]->dp['pp'];
$c=$node[$i]->tl['c'];
$n=$node[$i]->tl['n'];
//$pt=$node[$i]->dp['pt'];
print_r($node[$i]->dp['pt']);
print_r($node[$i]->dp['ppth']);
say($date." платформа ".$pp." тип ".$c." номер ".$n." ".$node[$i]->dp['ppth']);
}

}
За это сообщение автора Smolalex поблагодарил:
dr.pavlov.alex (Сб ноя 18, 2017 8:57 am)
Рейтинг: 1.16%
Ответить