| 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: 16 let
|
|||
0