Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]parsowanie pliku xml
Forum PHP.pl > Forum > Przedszkole
sweter


Witam, mam taki przykładowy plik XML:

Kod
</P><P><?xml version="1.0" encoding="utf-8"?>

<trips>

<trip id="28">
      <type>LAST</type>
          <offerid>5261</offerid>

          <length>7</length>

          <transport>

               <departure id="1">

                    <type>flight</type>

               </departure>

               <departure id="2">

                    <type>flight</type>

               </departure>

         </transport>

         <prices>

              <baseprice>1649</baseprice>

              <price>

                   <type>1CHD [02-15] BP</type> 

              </price>

              <price>

                   <type>1CHD [02-15] BP</type>

             </price>

        </prices>


Mój problem polega na tym, że gdy chcę odczytać zawartość ze znaczników <type>, to odczytywana jest zawartość ze wszystkich znaczników <type>. 

Jak zrobić, żeby była odczytywana zawartość wyłącznie za znaczników <type> znajdujących się np. wewnątrz znacznika <prieces> questionmark.gif

Mój prościutki parser wygląda tak:

  1.  
  2. while($xml->read()) {
  3. if($xml->nodeType == XMLReader::ELEMENT) {
  4. $name = $xml->name;
  5. }
  6.  
  7. if($xml->nodeType == XMLReader::TEXT) {
  8. if($name=="type"){
  9. echo "<li>".$name." ".$xml->value."</li>";
  10. }
  11. }
  12.  
  13. if($xml->nodeType == XMLReader::END_ELEMENT AND $name=="note") {
  14. echo "Koniec</ul>";$q++;
  15. }
  16.  
  17. }
  18.  
  19.  








paul210779
To jest mój sposób na rozwiązanie tego problemu tyle, że innym sposobem :

  1. echo '<ul>';
  2. $plik = fopen('plik.xml', 'r');
  3. if($plik) {
  4. while(!feof($plik)) {
  5. $linia = fgets($plik);
  6. if(strstr($linia, '<price>')) {
  7. while(!feof($plik)) {
  8. $linia = fgets($plik);
  9. if(strstr($linia, '<type>')) {
  10. echo '<li>'. $linia . '</li>';
  11. break;
  12. }
  13. }
  14. }
  15. }
  16. }
  17. echo '</ul>';


może coś Ci to może. Jeżeli nie, to wybacz ale dopiero raczkuję w php.
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.