Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][xml]Parsowanie xml
Forum PHP.pl > Forum > XML, AJAX
Krixus
Witam!
Niestety spotkałem się z problemem, z którym nie potrafię sobie poradzić od 2 dni sad.gif
Posiadam plik xml zawierający dane o powiatach i gminach. Fragment:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <teryt>
  3. <catalog name="TERC" type="all" date="2008-01-01">
  4. <row>
  5. <col name="WOJ">02</col>
  6. <col name="POW">01</col>
  7. <col name="GMI"/>
  8. <col name="RODZ"/>
  9. <col name="NAZWA">Powiat bolesławiecki</col>
  10. <col name="NAZDOD"/>
  11. <col name="STAN_NA">2008-01-01</col>
  12. </row>
  13. <row>
  14. <col name="WOJ">02</col>
  15. <col name="POW">01</col>
  16. <col name="GMI">01</col>
  17. <col name="RODZ">1</col>
  18. <col name="NAZWA">Bolesławiec</col>
  19. <col name="NAZDOD"/>
  20. <col name="STAN_NA">2008-01-01</col>
  21. </row>
  22. ...


Chciałbym, pozyskać z pliku treść pomiędzy "<col name="WOJ">", a "</col>" oraz pomiędzy "<col name="NAZWA">", a "</col>", gdzie "<col name="GMI"/>" jest pusta (nic nie posiada -> wtedy jest to powiat).
Próbowałem 100 różnych metod (wycinanie, simplexml, ...) i zawsze napotkałem na błąd.
Czy ktoś potrafi mi pomóc :?:
abusiek
Ja bym probowal uzyc x-patha

//row[col[@name='GMI' and text() != '']]

to chyba wybiera wszystkie wiersze ktore maja kolumne o nazwie GMI i jest ona pusta
Krixus
Do samego wypisania owszem, ale potrzebuję to przerzucić do bazy danych. Potrzebuję listę powiatów i gmin do bazy sad.gif
abusiek
hmm... to nie rozumiem w czym problem :/

  1. <?php
  2. $xml = new SimpleXMLElement($xmlString);
  3. foreach($xml->xpath("//row[col[@name='GMI' and text() != '']]") as $row)
  4. {
  5.  foreach($row as $col)
  6.  {
  7. if($col['name'] == 'WOJ')
  8. robisz inserta... itd 
  9.  }
  10. }
  11. ?>


i to zalatwia problem, a jesli ten x-path, ktory podalem nie zadziala to mozna chociazby za pomoca tych foreachy wykumac ze to nie jest gmina
Krixus
Dzięki - dałem warunek i działa smile.gif
Czadus
Witam, a w jaki sposób sparsować cały plik xml?? One zajmują, niektóre oczywiście, 30MB lub 70MB, parsowanie ich i wrzucanie do bazy nawet na rozszerzonych zapytaniach, trwa 1min (30MB), 2:30 (70MB). Testowane lokalnie, czy da się to jakoś radykalnie przyspieszyćquestionmark.gif Może ma ktoś jakąś koncepcję, z czego korzystać, w jaki sposób?? Szukam jakby pomysłów na dalsze udoskonalanie skryptu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.