[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: парсинг xml
psychild
Добрый вечер...возникла необходимость с ресурса парсануть xml файл, каталог стран.
есть такое...суть такова что есть некая страна а в ней есть курорты...
страна 1 (курорт1 курорт2 курорт3)
страна 2 (курорт4 курорт5 курорт6)


$xml = simplexml_load_file('countries.xml');
$title = $xml->xpath('//country[@id = "'.$c.'"]/resorts/resort/title'); // выбираю все тайтлы
$id = $xml->xpath('//country[@id = "'.$c.'"]/resorts/resort/@id'); // выбираю все айди..т.к. курорты начинаются не с 1 в каждой стране
// здесь цикл

$id[0] = равняется айди первого курортай той или иной страны
но если сделать так

$i = $id[0];

счетчик не считает...а просто, айди первого курорта страны. если ставить $i = '1'; то счетчик работает, но соответственно с 1...
foreach ($title as $name)
{

echo '<a href="'.MY_HOST.'main/read/'.$page.'?c='.$c.'&r='.$i++.'">'.$name.'</a><br>';
}

echo $node;

}



}





Спустя 1 час, 19 минут, 6 секунд (15.10.2011 - 22:47) psychild написал(а):
вообще не пойму в чем бок...

Спустя 44 минуты, 52 секунды (15.10.2011 - 23:32) Winston написал(а):
Дай код xml, и насчет ссылок объясни, а то не совсем вкурил... huh.gif

Спустя 11 часов, 59 минут, 38 секунд (16.10.2011 - 11:32) psychild написал(а):
мне нужно узнать, с какой цифры начинаются айди курортов в той или иной стране.

Добавлено через 13 минут

<countries>
<country
id=”…”>
<title>
</title>
<text>
</text>
<resorts>
<resort
id=”…”>
<title>
</title>
<text>
</text>
</resort>
<resort
id=”…”>
<title>
</title>
<text>
</text>
</resort>


</resorts>
</country>


</countries>

Причем id в resort начинаеться с 1 только в первой стране....а потом идет по очереди, не начинаясь с 1 в новой стране.
Передо мной стала задача сначала вытащить ссылки на страны.
Потом при нажатии на ссылку, открывалась страна, и в виде ссылок названия курортов, при нажатии на которые, просто открывалось описание курорта.
Вот гавнокода:

$xml = simplexml_load_file('countries.xml');
$c=$_GET['c'];
$r=$_GET['r'];

if (isset($r)) { //если есть переменная с айди страны...и айди курорта вывожу его
$nodesas1 = $xml->xpath('//country[@id = "'.$c.'"]/resorts/resort[@id = "'.$r.'"]/title');
$nodesas = $xml->xpath('//country[@id = "'.$c.'"]/resorts/resort[@id = "'.$r.'"]/text');
foreach ($nodesas as $resort)
{
echo "<strong style='font-size:26px;'>$nodesas1[0]</strong><br>$resort";
}
}

else // если есть айди страны...но нет айди курорта...выводим текст курорта и ссылки на курорты
if(isset($c) && !$r)
{

$nodes = $xml->xpath('//country[@id = "'.$c.'"]/text');
$nodes1 = $xml->xpath('//country[@id = "'.$c.'"]/title');
$nodes2 = $xml->xpath('//country[@id = "'.$c.'"]/resorts/resort/title');
$nodesss = $xml->xpath('//country[@id = "'.$c.'"]/resorts/resort/@id'); //я получаю массив со всеми айди курортов данной страны


foreach ($nodes as $node)
{

echo "<strong style='font-size:26px;'>$nodes1[0]</strong>";
echo "<br><p style='font-size:26px;'>Курорты:<p>";



$i = $nodesss[0]; // получаю первое значение массива с айди и пытаюсь увеличить его на 1, но не выходит

foreach ($nodes2 as $nodea)

{

echo '<a href="'.MY_HOST.'main/read/'.$page.'?c='.$c.'&r='. $i++ .'">'.$nodea.'</a><br>';

}


echo $node;

}



}


else {


$nodes = $xml->xpath('//country/title'); // здесь выхватываю заголовки всех стран и формирую ссылку.

$b = 1;
foreach ($nodes as $id)
{
echo '<a href="'.MY_HOST.'main/read/'.$page.'?c='.$b++.'">'.$id.'</a><br>';
}
}


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.