Autor | Zpráva | ||
---|---|---|---|
ladinek111 Profil |
#1 · Zasláno: 25. 4. 2010, 11:47:24
Dobrý den.
Potřeboval bych poradit se strukturováním XML pomocí PHP. Pomocí PHP se připojím do MySQL databáze a parsuji data do XML. Data bych potřeboval strukturovat nějak takhle: <polygons> - <polygon name="Polygon21" address="Ostrava" type="type" colour="#ff0000"> <point lat="49.837" lng="17.992" /> <point lat="49.777" lng="18.092" /> <point lat="49.879" lng="18.198" /> <point lat="49.841" lng="18.073" /> <point lat="49.837" lng="17.992" /> </polygon> </polygons> bohužel z databáze to načítám v tomhle formátu (ukládám dvojice čísel za sebou, oddělené čárkou). Zkoušel jsem na doporučení hrát si s funkcí explode ale to asi nebyla správna cesta: <polygons> <polygon name="Polygon21" address="Ostrava" latlng="49.837 17.992,49.777 18.092,49.879 18.198,49.841 18.073,49.837 17.992" type="poly"/> </polygons> Děkuji za pomoc |
||
Chro Profil |
#2 · Zasláno: 25. 4. 2010, 12:59:20
Možná takhle, podle lamy:
$data = explode('latlng="', $xml); $souradnice = explode('"', $data[1]); $souradnice_pole = explode(",", $souradnice[0]); $pocet = count($souradnice_pole); for ($i = 0; $i < $pocet; ++$i) { list($lat, $lng) = explode(" ", $souradnice_pole[$i]); $konvert_xml.= '<point lat="'.$lat.'" lng="'.$lng.'" />'."\n"; } $novy_xml = $data[0].'type ="type" colour="#ff0000">'. "\n".$konvert_xml.'</polygon>'."\n".'</polygons>'; echo $novy_xml; |
||
Chro Profil |
#3 · Zasláno: 25. 4. 2010, 14:39:16
Omlouvám se, chyba, na stránku se to vypíše přes echo '<xmp>'.$novy_xml.'</xmp>';
|
||
ladinek111 Profil |
#4 · Zasláno: 25. 4. 2010, 22:03:59
Chro:
Děkuji za příklad. Myslím že chápu o co přesně jde v tom skriptu ale pořád mi to nejde implementovat :-(( V podstatě z databáze dostávám množství záznamu strukturovaných tak jak jsou v tom prvním příspěvku. Všechno běží, bohužel u té funkce explode nejsem schopný ji upravit aby fungovala a vypisovala mi ty latlng v cyklu pod sebe. Budu moc vděčný za pomoc. header("Content-type: text/xml"); // Start XML file, echo parent node echo '<polygons>'; // Iterate through the rows, printing XML nodes for each while ($row = @mysql_fetch_assoc($result)){ // ADD TO XML DOCUMENT NODE echo '<polygon '; echo 'name="' . parseToXML($row['name']) . '" '; echo 'address="' . parseToXML($row['address']) . '" '; echo 'type="' . parseToXML($row['type']) . '" '; //echo 'latlng="' . parseToXML ($row['Glatlng']) . '" '; $data = explode('latlng="', $row['Glatlng']); //nevím jestli nenačítám špatně pouze ten atribut Glatlng z db. ještě mně napadlo nejdřív surově vyexportovat ten xml a pak se na něj odkázat tak jak jste popsal Vy ($xml). $souradnice = explode('"', $data[1]); $souradnice_pole = explode(",", $souradnice[0]); $pocet = count($souradnice_pole); for ($i = 0; $i < $pocet; ++$i) { list($lat, $lng) = explode(" ", $souradnice_pole[$i]); echo '<point lat="'.$lat.'" lng="'.$lng.'" />'."\n"; } echo '/>'; } // End XML file echo '</polygons>'; |
||
larryx Profil |
#5 · Zasláno: 25. 4. 2010, 22:20:52 · Upravil/a: larryx
skus toto:
header("Content-type: text/xml"); echo '<polygons>'; while ($row = @mysql_fetch_assoc($result)){ echo "\t".'<polygon '; echo 'name="' . parseToXML($row['name']) . '" '; echo 'address="' . parseToXML($row['address']) . '" '; echo 'type="' . parseToXML($row['type']) . '" '; echo '>'."\n"; $suradnice= explode(",", $row['Glatlng']); foreach($suradnice as $val){ list($lat, $lng) = explode(" ", $val); echo "\t\t".'<point lat="'.$lat.'" lng="'.$lng.'" />'."\n"; } echo "\t".'</polygon>'."\n"; } echo '</polygons>'; výsledok: <polygons> <polygon name="lolko" address="adresapekna" type="typdaky" > <point lat="49.837" lng="17.992" /> <point lat="49.777" lng="18.092" /> <point lat="49.879" lng="18.198" /> <point lat="49.841" lng="18.073" /> <point lat="49.837" lng="17.992" /> </polygon> </polygons> |
||
ladinek111 Profil |
#6 · Zasláno: 26. 4. 2010, 08:43:58
larryx:
Děkuji. Všechno perfektně běží :-) |
||
Časová prodleva: 14 let
|
0