musicant
Новичок
помогите с парсингом XML
Добрый день!
Я в XML новичек, и застрял почти на ровном месте.
Вот часть кода xml:
<packets>
<packet>
<packetHeader>
<tour key="" name="" nameLat="" countryKey="" cityFromKey="" />
<spo key="" name="" nameLat="" for="" validFrom="" validTo="" issue="" issueTime="" spoState="" priceCount="">
<dates>
<date>yyy-mm-dd</date>
<date>yyy-mm-dd</date>
<date>yyy-mm-dd</date>
<date>yyy-mm-dd</date>
<date>yyy-mm-dd</date>
</dates>
</spo>
</packetHeader>
....
</packet>
</packets>
Блок <packet></packet> повторяется много раз. количество элементов <date></date> каждый раз меняется.
Делаю так:
$data=$client->__getLastResponse();
$p = xml_parser_create();
xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($p, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($p, $data, $vals, $index);
xml_parser_free($p);
$tours=array();
$spo=array();
...
foreach($vals as $el)
{
if($el['tag']=="tour"){
if(isset($el['attributes'])&&isset($el['attributes']['name']))
$tours[]=$el['attributes']['name'];
...
}
if($el['tag']=="spo"){
if(isset($el['attributes'])&&isset($el['attributes']['key']))
$spo[]=$el['attributes']['key'];
...
}
}
Не могу понять, как вытащить даты из <dates></dates>
Вытащить вобще все даты - не проблема, а даты только из текущего <dates></dates>.....
Потом все это идет в MySQL.
Подскажите пожалуйста правильное решение.
Добрый день!
Я в XML новичек, и застрял почти на ровном месте.
Вот часть кода xml:
<packets>
<packet>
<packetHeader>
<tour key="" name="" nameLat="" countryKey="" cityFromKey="" />
<spo key="" name="" nameLat="" for="" validFrom="" validTo="" issue="" issueTime="" spoState="" priceCount="">
<dates>
<date>yyy-mm-dd</date>
<date>yyy-mm-dd</date>
<date>yyy-mm-dd</date>
<date>yyy-mm-dd</date>
<date>yyy-mm-dd</date>
</dates>
</spo>
</packetHeader>
....
</packet>
</packets>
Блок <packet></packet> повторяется много раз. количество элементов <date></date> каждый раз меняется.
Делаю так:
$data=$client->__getLastResponse();
$p = xml_parser_create();
xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($p, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($p, $data, $vals, $index);
xml_parser_free($p);
$tours=array();
$spo=array();
...
foreach($vals as $el)
{
if($el['tag']=="tour"){
if(isset($el['attributes'])&&isset($el['attributes']['name']))
$tours[]=$el['attributes']['name'];
...
}
if($el['tag']=="spo"){
if(isset($el['attributes'])&&isset($el['attributes']['key']))
$spo[]=$el['attributes']['key'];
...
}
}
Не могу понять, как вытащить даты из <dates></dates>
Вытащить вобще все даты - не проблема, а даты только из текущего <dates></dates>.....
Потом все это идет в MySQL.
Подскажите пожалуйста правильное решение.
[^>]*>)/", "$1$2$3", $data);
roducts/2004-04-19">