[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг XML
igor1306
Здраствуйте, вот такая ситуация, у меня задача подключить XML базу на сайт, тоисть выводить информацию с XML на сайте.
Посмотрите, пожалуйста мой код:

function utf8_convert($str, $type)
{
static $conv = '';
if (!is_array($conv))
{
$conv = array();
for ($x=128; $x <= 143; $x++)
{
$conv['utf'][] = chr(209) . chr($x);
$conv['win'][] = chr($x + 112);
}
for ($x=144; $x<= 191; $x++)
{
$conv['utf'][] = chr(208) . chr($x);
$conv['win'][] = chr($x + 48);
}
$conv['utf'][] = chr(208) . chr(129);
$conv['win'][] = chr(168);
$conv['utf'][] = chr(209) . chr(145);
$conv['win'][] = chr(184);
}
if ($type == 'w')
{
return str_replace($conv['utf'], $conv['win'], $str);
}
elseif ($type == 'u')
{
return str_replace($conv['win'], $conv['utf'], $str);
}
else
{
return $str;
}
}


echo '<h1><font color="red">Проекты</font></h1>';
$url = 'db.xml'; //адрес XML

$xml = simplexml_load_file($url); //Интерпретирует XML-файл в объект

//цикл для обхода всей XML ленты

foreach ($xml->erlis->projekty as $item) {
echo '<a href="'.$item->nazov.'">';
echo '<h2>'.utf8_convert($item->uri,"w").'</h2>'; //выводим на печать заголовок статьи
echo '</a>';
echo utf8_convert($item->popis,"w"); //выводим на печать текст статьи


}




А вот XML документ


<erlis>
<projekty
id="2">
<nazov>
Diamant 73/182</nazov>
<uri>
diamant-73_182</uri>
<top5>
no</top5>
<rada_nazov>
1</rada_nazov>
<kategoria_nazov>
2</kategoria_nazov>
<popis>
<!-- Generated by XStandard version 2.0.0.0 on 2011-12-05T14:01:27 --><p>DIAMANT 73/182 je dům menšн velikosti se 4 obytnэmi mнstnostmi. Svэmi rozměry uspokojн nбroky 4-5 člennй rodiny. Rodinnэ dům je možnй čбstečně nebo ъplně podsklepit. Z bočnн strany domu je možno přistavět garбž, dvougarбž přнp. krytй stбnн. Rodinnэ dům je vhodnэ na rovinatэ, přнpadně mнrně svahovitэ terйn.</p></popis>
<pocet_miestnosti>
4</pocet_miestnosti>
<pocet_osob>
4</pocet_osob>
<obytna_plocha>
73.00</obytna_plocha>
<uzitkova_plocha>
126.00</uzitkova_plocha>
<zastavana_plocha>
81.00</zastavana_plocha>
<obostavany_priestor>
523</obostavany_priestor>
<vyska_strechy>
7.89</vyska_strechy>
<orientacia_vstupu>
Z, JZ, S, SZ</orientacia_vstupu>
<sklon_strechy>
35</sklon_strechy>
<plocha_suteren>
0.00</plocha_suteren>
<plocha_prizemie>
66.70</plocha_prizemie>
<plocha_poschodie>
59.20</plocha_poschodie>
<cena_projekt>
26900</cena_projekt>
<cena_zaloha>
8100</cena_zaloha>
<cena_nakluc>
2550000</cena_nakluc>
<cena_suteren>
2550000</cena_suteren>
<cena_materialu>
1650000</cena_materialu>
<rocnik>
2010</rocnik>
<novinka>
no</novinka>
<fotogaleria>
no</fotogaleria>
<vizualizacia>
http://www.dumprojekt.cz/katalog/diamant-73_182/vizualizacia.jpg</vizualizacia>
<pohlad_01>
http://www.dumprojekt.cz/katalog/diamant-73_182/pohlad-01.jpg</pohlad_01>
<pohlad_02>
http://www.dumprojekt.cz/katalog/diamant-73_182/pohlad-02.jpg</pohlad_02>
<pohlad_03>
http://www.dumprojekt.cz/katalog/diamant-73_182/pohlad-03.jpg</pohlad_03>
<pohlad_04>
http://www.dumprojekt.cz/katalog/diamant-73_182/pohlad-04.jpg</pohlad_04>
<poschodie_n>
http://www.dumprojekt.cz/katalog/diamant-73_182/poschodie_n.swf</poschodie_n>
<poschodie_p>
http://www.dumprojekt.cz/katalog/diamant-73_182/poschodie_p.swf</poschodie_p>
<poschodie_z>
http://www.dumprojekt.cz/katalog/diamant-73_182/poschodie_z.swf</poschodie_z>
<prizemie_n>
http://www.dumprojekt.cz/katalog/diamant-73_182/prizemie_n.swf</prizemie_n>
<prizemie_p>
http://www.dumprojekt.cz/katalog/diamant-73_182/prizemie_p.swf</prizemie_p>
<prizemie_z>
http://www.dumprojekt.cz/katalog/diamant-73_182/prizemie_z.swf</prizemie_z>
<suteren_n>
http://www.dumprojekt.cz/katalog/diamant-73_182/suteren_n.swf</suteren_n>
<suteren_p>
http://www.dumprojekt.cz/katalog/diamant-73_182/suteren_p.swf</suteren_p>
<suteren_z>
http://www.dumprojekt.cz/katalog/diamant-73_182/suteren_z.swf</suteren_z>
</projekty>
<projekty
id="3">
<nazov>
Diamant 77/59</nazov>
<uri>
diamant-77_59</uri>
<top5>
no</top5>
<rada_nazov>
1</rada_nazov>
<kategoria_nazov>
2</kategoria_nazov>
<popis>
<!-- Generated by XStandard version 2.0.0.0 on 2011-06-16T11:51:22 --><p>DIAMANT 77/59 je dům menšн velikostnн kategorie se 4 obytnэmi mнstnostmi. Svэmi rozměry uspokojн nбroky 4-5 člennй rodiny. Objekt je možnй realizovat se suterйnem. Z bočnн strany domu je možnй postavit garбž nebo dvojgarбž. Dům se dб umнstit do rovinatйho nebo mнrně svahovitйho terйnu.</p></popis>
<pocet_miestnosti>
4</pocet_miestnosti>
<pocet_osob>
4</pocet_osob>
<obytna_plocha>
90.60</obytna_plocha>
<uzitkova_plocha>
132.30</uzitkova_plocha>
<zastavana_plocha>
86.00</zastavana_plocha>
<obostavany_priestor>
550</obostavany_priestor>
<vyska_strechy>
7.81</vyska_strechy>
<orientacia_vstupu>
JZ, J, SZ, Z</orientacia_vstupu>
<sklon_strechy>
45</sklon_strechy>
<plocha_suteren>
0.00</plocha_suteren>
<plocha_prizemie>
70.30</plocha_prizemie>
<plocha_poschodie>
62.00</plocha_poschodie>
<cena_projekt>
23800</cena_projekt>
<cena_zaloha>
7140</cena_zaloha>
<cena_nakluc>
2695000</cena_nakluc>
<cena_suteren>
2695000</cena_suteren>
<cena_materialu>
1752000</cena_materialu>
<rocnik>
2003</rocnik>
<novinka>
no</novinka>
<fotogaleria>
yes</fotogaleria>
<vizualizacia>
http://www.dumprojekt.cz/katalog/diamant-77_59/vizualizacia.jpg</vizualizacia>
<pohlad_01>
http://www.dumprojekt.cz/katalog/diamant-77_59/pohlad-01.jpg</pohlad_01>
<pohlad_02>
http://www.dumprojekt.cz/katalog/diamant-77_59/pohlad-02.jpg</pohlad_02>
<pohlad_03>
http://www.dumprojekt.cz/katalog/diamant-77_59/pohlad-03.jpg</pohlad_03>
<pohlad_04>
http://www.dumprojekt.cz/katalog/diamant-77_59/pohlad-04.jpg</pohlad_04>
<poschodie_n>
http://www.dumprojekt.cz/katalog/diamant-77_59/poschodie_n.swf</poschodie_n>
<poschodie_p>
http://www.dumprojekt.cz/katalog/diamant-77_59/poschodie_p.swf</poschodie_p>
<poschodie_z>
http://www.dumprojekt.cz/katalog/diamant-77_59/poschodie_z.swf</poschodie_z>
<prizemie_n>
http://www.dumprojekt.cz/katalog/diamant-77_59/prizemie_n.swf</prizemie_n>
<prizemie_p>
http://www.dumprojekt.cz/katalog/diamant-77_59/prizemie_p.swf</prizemie_p>
<prizemie_z>
http://www.dumprojekt.cz/katalog/diamant-77_59/prizemie_z.swf</prizemie_z>
<suteren_n>
http://www.dumprojekt.cz/katalog/diamant-77_59/suteren_n.swf</suteren_n>
<suteren_p>
http://www.dumprojekt.cz/katalog/diamant-77_59/suteren_p.swf</suteren_p>
<suteren_z>
http://www.dumprojekt.cz/katalog/diamant-77_59/suteren_z.swf</suteren_z>
</projekty>
<projekty
id="4">
<nazov>
Diamant 78/96</nazov>
<uri>
diamant-78_96</uri>
<top5>
no</top5>
<rada_nazov>
1</rada_nazov>
<kategoria_nazov>
2</kategoria_nazov>
<popis>
<!-- Generated by XStandard version 2.0.0.0 on 2011-06-16T11:51:29 --><p>DIAMANT 78/96 je dům menšн velikosti s 5 obytnэmi mнstnostmi. Svэmi rozměry uspokojн nбroky 5-6 člennй rodiny. Rodinnэ dům je možnй čбstečně nebo ъplně podsklepit. Dům je vhodnэ do rovinatйho terйnu. Z bočnн strany domu je prostor na přнstavbu garбže, dvougarбže.</p></popis>
<pocet_miestnosti>
5</pocet_miestnosti>
<pocet_osob>
5</pocet_osob>
<obytna_plocha>
77.40</obytna_plocha>
<uzitkova_plocha>
128.90</uzitkova_plocha>
<zastavana_plocha>
80.60</zastavana_plocha>
<obostavany_priestor>
545</obostavany_priestor>
<vyska_strechy>
8.16</vyska_strechy>
<orientacia_vstupu>
SV, V, S</orientacia_vstupu>
<sklon_strechy>
45</sklon_strechy>
<plocha_suteren>
0.00</plocha_suteren>
<plocha_prizemie>
65.80</plocha_prizemie>
<plocha_poschodie>
63.10</plocha_poschodie>
<cena_projekt>
24400</cena_projekt>
<cena_zaloha>
7320</cena_zaloha>
<cena_nakluc>
2671000</cena_nakluc>
<cena_suteren>
2671000</cena_suteren>
<cena_materialu>
1736000</cena_materialu>
<rocnik>
2005</rocnik>
<novinka>
no</novinka>
<fotogaleria>
yes</fotogaleria>
<vizualizacia>
http://www.dumprojekt.cz/katalog/diamant-78_96/vizualizacia.jpg</vizualizacia>
<pohlad_01>
http://www.dumprojekt.cz/katalog/diamant-78_96/pohlad-01.jpg</pohlad_01>
<pohlad_02>
http://www.dumprojekt.cz/katalog/diamant-78_96/pohlad-02.jpg</pohlad_02>
<pohlad_03>
http://www.dumprojekt.cz/katalog/diamant-78_96/pohlad-03.jpg</pohlad_03>
<pohlad_04>
http://www.dumprojekt.cz/katalog/diamant-78_96/pohlad-04.jpg</pohlad_04>
<poschodie_n>
http://www.dumprojekt.cz/katalog/diamant-78_96/poschodie_n.swf</poschodie_n>
<poschodie_p>
http://www.dumprojekt.cz/katalog/diamant-78_96/poschodie_p.swf</poschodie_p>
<poschodie_z>
http://www.dumprojekt.cz/katalog/diamant-78_96/poschodie_z.swf</poschodie_z>
<prizemie_n>
http://www.dumprojekt.cz/katalog/diamant-78_96/prizemie_n.swf</prizemie_n>
<prizemie_p>
http://www.dumprojekt.cz/katalog/diamant-78_96/prizemie_p.swf</prizemie_p>
<prizemie_z>
http://www.dumprojekt.cz/katalog/diamant-78_96/prizemie_z.swf</prizemie_z>
<suteren_n>
http://www.dumprojekt.cz/katalog/diamant-78_96/suteren_n.swf</suteren_n>
<suteren_p>
http://www.dumprojekt.cz/katalog/diamant-78_96/suteren_p.swf</suteren_p>
<suteren_z>
http://www.dumprojekt.cz/katalog/diamant-78_96/suteren_z.swf</suteren_z>
</projekty>
<projekty
id="5">
<nazov>
Diamant 81/183</nazov>
<uri>
diamant-81_183</uri>
<top5>
no</top5>
<rada_nazov>
1</rada_nazov>
<kategoria_nazov>
2</kategoria_nazov>
<popis>
<!-- Generated by XStandard version 2.0.0.0 on 2011-03-25T12:56:17 --><p>DIAMANT 81/183 je dům menšн velikosti s 5 obytnэmi mнstnostmi. Svэmi rozměry uspokojн nбroky 4-6 člennй rodiny. Rodinnэ dům je možnй čбstečně nebo ъplně podsklepit. Z bočnн strany domu je možno přistavět garбž, dvougarбž přнp. krytй stбnн. Rodinnэ dům je vhodnэ na rovinatэ, přнpadně mнrně svahovitэ terйn.</p></popis>
<pocet_miestnosti>
5</pocet_miestnosti>
<pocet_osob>
5</pocet_osob>
<obytna_plocha>
81.20</obytna_plocha>
<uzitkova_plocha>
129.90</uzitkova_plocha>
<zastavana_plocha>
80.00</zastavana_plocha>
<obostavany_priestor>
546</obostavany_priestor>
<vyska_strechy>
7.74</vyska_strechy>
<orientacia_vstupu>
SV, S, SZ</orientacia_vstupu>
<sklon_strechy>
45</sklon_strechy>
<plocha_suteren>
0.00</plocha_suteren>
<plocha_prizemie>
64.60</plocha_prizemie>
<plocha_poschodie>
65.30</plocha_poschodie>
<cena_projekt>
27200</cena_projekt>
<cena_zaloha>
8200</cena_zaloha>
<cena_nakluc>
2650000</cena_nakluc>
<cena_suteren>
2650000</cena_suteren>
<cena_materialu>
1720000</cena_materialu>
<rocnik>
2010</rocnik>
<novinka>
no</novinka>
<fotogaleria>
no</fotogaleria>
<vizualizacia>
http://www.dumprojekt.cz/katalog/diamant-81_183/vizualizacia.jpg</vizualizacia>
<pohlad_01>
http://www.dumprojekt.cz/katalog/diamant-81_183/pohlad-01.jpg</pohlad_01>
<pohlad_02>
http://www.dumprojekt.cz/katalog/diamant-81_183/pohlad-02.jpg</pohlad_02>
<pohlad_03>
http://www.dumprojekt.cz/katalog/diamant-81_183/pohlad-03.jpg</pohlad_03>
<pohlad_04>
http://www.dumprojekt.cz/katalog/diamant-81_183/pohlad-04.jpg</pohlad_04>
<poschodie_n>
http://www.dumprojekt.cz/katalog/diamant-81_183/poschodie_n.swf</poschodie_n>
<poschodie_p>
http://www.dumprojekt.cz/katalog/diamant-81_183/poschodie_p.swf</poschodie_p>
<poschodie_z>
http://www.dumprojekt.cz/katalog/diamant-81_183/poschodie_z.swf</poschodie_z>
<prizemie_n>
http://www.dumprojekt.cz/katalog/diamant-81_183/prizemie_n.swf</prizemie_n>
<prizemie_p>
http://www.dumprojekt.cz/katalog/diamant-81_183/prizemie_p.swf</prizemie_p>
<prizemie_z>
http://www.dumprojekt.cz/katalog/diamant-81_183/prizemie_z.swf</prizemie_z>
<suteren_n>
http://www.dumprojekt.cz/katalog/diamant-81_183/suteren_n.swf</suteren_n>
<suteren_p>
http://www.dumprojekt.cz/katalog/diamant-81_183/suteren_p.swf</suteren_p>
<suteren_z>
http://www.dumprojekt.cz/katalog/diamant-81_183/suteren_z.swf</suteren_z>
</projekty>
<projekty
id="6">
<nazov>
Diamant 85/77</nazov>
<uri>
diamant-85_77</uri>
<top5>
no</top5>
<rada_nazov>
1</rada_nazov>
<kategoria_nazov>
2</kategoria_nazov>
<popis>
<!-- Generated by XStandard version 2.0.0.0 on 2011-06-16T11:51:36 --><p>DIAMANT 85/77 je dům střednн velikostnн kategorie se 4 obytnэmi mнstnostmi. Svэmi rozměry uspokojн nбroky 4-6 člennй rodiny. Svэm dispozičnнm řešenнm umožňuje čбstečtečnй nebo ъplnй podsklepenн. Z bočnн strany domu je možnй postavit garбž nebo dvojgarбž. Vstupnн čбst je možnй uzavřнt prosklenнm.</p></popis>
<pocet_miestnosti>
4</pocet_miestnosti>
<pocet_osob>
4</pocet_osob>
<obytna_plocha>
80.40</obytna_plocha>
<uzitkova_plocha>
139.10</uzitkova_plocha>
<zastavana_plocha>
98.70</zastavana_plocha>
<obostavany_priestor>
627</obostavany_priestor>
<vyska_strechy>
7.16</vyska_strechy>
<orientacia_vstupu>
SV, S, SZ, Z</orientacia_vstupu>
<sklon_strechy>
45</sklon_strechy>
<plocha_suteren>
0.00</plocha_suteren>
<plocha_prizemie>
79.30</plocha_prizemie>
<plocha_poschodie>
59.80</plocha_poschodie>
<cena_projekt>
24700</cena_projekt>
<cena_zaloha>
7410</cena_zaloha>
<cena_nakluc>
3072000</cena_nakluc>
<cena_suteren>
3072000</cena_suteren>
<cena_materialu>
1997000</cena_materialu>
<rocnik>
2004</rocnik>
<novinka>
no</novinka>
<fotogaleria>
yes</fotogaleria>
<vizualizacia>
http://www.dumprojekt.cz/katalog/diamant-85_77/vizualizacia.jpg</vizualizacia>
<pohlad_01>
http://www.dumprojekt.cz/katalog/diamant-85_77/pohlad-01.jpg</pohlad_01>
<pohlad_02>
http://www.dumprojekt.cz/katalog/diamant-85_77/pohlad-02.jpg</pohlad_02>
<pohlad_03>
http://www.dumprojekt.cz/katalog/diamant-85_77/pohlad-03.jpg</pohlad_03>
<pohlad_04>
http://www.dumprojekt.cz/katalog/diamant-85_77/pohlad-04.jpg</pohlad_04>
<poschodie_n>
http://www.dumprojekt.cz/katalog/diamant-85_77/poschodie_n.swf</poschodie_n>
<poschodie_p>
http://www.dumprojekt.cz/katalog/diamant-85_77/poschodie_p.swf</poschodie_p>
<poschodie_z>
http://www.dumprojekt.cz/katalog/diamant-85_77/poschodie_z.swf</poschodie_z>
<prizemie_n>
http://www.dumprojekt.cz/katalog/diamant-85_77/prizemie_n.swf</prizemie_n>
<prizemie_p>
http://www.dumprojekt.cz/katalog/diamant-85_77/prizemie_p.swf</prizemie_p>
<prizemie_z>
http://www.dumprojekt.cz/katalog/diamant-85_77/prizemie_z.swf</prizemie_z>
<suteren_n>
http://www.dumprojekt.cz/katalog/diamant-85_77/suteren_n.swf</suteren_n>
<suteren_p>
http://www.dumprojekt.cz/katalog/diamant-85_77/suteren_p.swf</suteren_p>
<suteren_z>
http://www.dumprojekt.cz/katalog/diamant-85_77/suteren_z.swf</suteren_z>
</projekty>
</erlis>





Спустя 14 минут, 42 секунды (31.01.2012 - 17:36) Winston написал(а):
И в чем проблема?

Спустя 10 минут, 49 секунд (31.01.2012 - 17:46) igor1306 написал(а):
Выводит вот такую ошибку Warning: Invalid argument supplied for foreach()

Спустя 12 минут, 13 секунд (31.01.2012 - 17:59) Winston написал(а):
$xml = simplexml_load_file($str);
foreach ($xml->projekty as $item)
{
echo '<a href="'.$item->nazov.'">';
echo '<h2>'.utf8_convert($item->uri,"w").'</h2>'; //выводим на печать заголовок статьи
echo '</a>';
echo utf8_convert($item->popis,"w"); //выводим на печать текст статьи
}

Спустя 1 час, 21 минута, 39 секунд (31.01.2012 - 19:20) igor1306 написал(а):
А сейчас, такие ошибки

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity ""
Warning: Invalid argument supplied for foreach()

Спустя 13 минут, 37 секунд (31.01.2012 - 19:34) Winston написал(а):
У тебя в xml файле в начале есть заголовок?
<?xml version="1.0" encoding="здесь укажи кодировку"?>

Спустя 26 минут, 20 секунд (31.01.2012 - 20:00) igor1306 написал(а):
Да есть, вот такая строка:
<?xml version="1.0" encoding="utf-8"?>

Спустя 17 часов, 47 минут, 19 секунд (1.02.2012 - 13:48) Winston написал(а):
Перепиши может так если файл лежит в одной директории со скриптом
$url = './db.xml';       //адрес XML

Или пропиши полный путь вместе с протоколом
$url = 'http://localhost/db.xml';       //адрес XML

Или какой там у тебя адрес

Спустя 17 минут, 35 секунд (1.02.2012 - 14:05) killer8080 написал(а):
А зачем нужен этот велосипед? user posted image
Свернутый текст
Цитата (igor1306 @ 31.01.2012 - 16:21)
function utf8_convert($str, $type)
{
static $conv = '';
if (!is_array($conv))
{
$conv = array();
for ($x=128; $x <= 143; $x++)
{
$conv['utf'][] = chr(209) . chr($x);
$conv['win'][] = chr($x + 112);
}
for ($x=144; $x<= 191; $x++)
{
$conv['utf'][] = chr(208) . chr($x);
$conv['win'][] = chr($x + 48);
}
$conv['utf'][] = chr(208) . chr(129);
$conv['win'][] = chr(168);
$conv['utf'][] = chr(209) . chr(145);
$conv['win'][] = chr(184);
}
if ($type == 'w')
{
return str_replace($conv['utf'], $conv['win'], $str);
}
elseif ($type == 'u')
{
return str_replace($conv['win'], $conv['utf'], $str);
}
else
{
return $str;
}
}


iconv чем не угодила?

Спустя 16 минут, 17 секунд (1.02.2012 - 14:21) neadekvat написал(а):
Цитата (Winston @ 1.02.2012 - 14:48)
Или пропиши полный путь вместе с протоколом

Мне кажется, что я это уже говорил, и причем именно тебе. Если файл на своем сервере - не надо http использовать. Подключай от корня и все. Для этого тебе $_SERVER['DOCUMENT_ROOT'] дан.

Спустя 5 часов, 7 минут, 2 секунды (1.02.2012 - 19:29) Winston написал(а):
Цитата (neadekvat @ 1.02.2012 - 13:21)
и причем именно тебе

Не мне - это 100%
Быстрый ответ:

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