php: parse xml Fișier Fișiere cu mai multe linii

Trebuie să formez o masă pentru fiecare drum cu o coloană shape_leng și cu coordonate (mai multe coloane) pentru fiecare drum care poate fi orice număr de linii pentru un drum pe care trebuie să-l salvez într-un singur rând

Fișierul xml are acest format: câteva șosele sunt șiruri de mai multe linii, iar altele au doar o singură linie:

Și am încercat să o analizez

(Rețineți că shape_leng este unică pentru un drum, dar liniile de coordonate pot fi simple sau multe pentru un drum.)

Deci nu le pot adăuga într-o anumită ordine, precum shape_leng și coordonatele .

0
Trebuie să formez o masă pentru fiecare drum cu o coloană shape_leng și cu coordonate (mai multe coloane) pentru fiecare drum care poate fi orice număr de linii pentru un drum pe care trebuie să-l salvez într-un singur rând
adăugat autor Rakesh12, sursa
Deci ... care este întrebarea?
adăugat autor McGarnagle, sursa
adăugați ordine atunci când interogați baza de date pentru a selecta din ea, nu când introduceți datele. a făcut asta?
adăugat autor hakre, sursa

1 răspunsuri

Dacă doriți să inserați toate coordonatele într-un singur rând de baze de date, cred că trebuie să construiți XPath și buclă un pic diferit. Faceți buclă prin drumuri, apoi utilizați XPath pentru a obține toate coordonatele aparținând acelui șosea. De exemplu:

// get all the roads and loop through them
$roads = $xml->xpath("//e:featureMember/b:AA_ROAD");
$i=0;

while(isset($roads[$i]))
{
   //get the coordinates for the current road
    $coordinates = $roads[i]->xpath("/b:the_geom/e:MultiLineString/e:lineStringMember/e:LineString/e:coordinates");
    $shapel = $roads[i]->xpath("/b:SHAPE_Leng");

   //add a second loop to concatinate all the $coordinates
    $j=0;
    while (isset($coordinates[$j])) {
       //TODO concatinate coordinates
    }

  //insert the row
   $b=mysql_query("INSERT IGNORE INTO `new`.`road1` (`coordstr`, `shapeleng`) values (GEOMFROMTEXT(concat('MULTILINESTRING ($a )')), '$shapel[$i]') ");


    $i++;
    echo "
"; echo $i; }
0
adăugat
Obținerea unei erori pentru $ shapel = $ roads [$ i] -> xpath ("/ b: SHAPE_Leng"); Atenție: SimpleXMLElement :: xpath() [ simplexmlelement.xpath ]: prefixul Nomenclatorul spațiului de nume în C: \ wamp \ www \ kgp \ newroadp.php pe linia 14 $ shapel = $ drumuri [$ i] -> xpath ( "/ b: SHAPE_Leng");
adăugat autor Rakesh12, sursa
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT