Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [xml][simplexml] Problem z ładowaniem XML z pustymi liniami
Forum PHP.pl > Forum > XML, AJAX
user2
Witam!
Próbuję poniższym kodem:
  1. <?php
  2. $xml = simplexml_load_file("http://serwer/xml.php?param1=a&param2=b");
  3. ?>

załadować plik XML, który jest zwracany przez plik xml.php.
Wszystko jest ok do momentu, gdy plik xml.php nie zwraca XMLa, który zawiera takie coś:
  1. <Part>
  2. <POLE>Pierwsza linijka
  3.  
  4. Druga linijka</POLE>
  5. </Part>

Wtedy simplexml zwraca błąd:
  1. <?php
  2. parser error : Premature end of data in tag Part
  3. ?>

w linijce gdzie znajduje się
  1. <?php
  2. $xml = simplexml_load_file("http://serwer/xml.php?param1=a&param2=b");
  3. ?>


Testowałem i zauważyłem, że problem leży w tych "enterach" w XMLu - jak je usunę do testów wszystko działa ok. Tyle, że nie mogę ich usunąć na stałe, bo tak je dostaję "z góry".

Szukałem informacji o tym temacie w sieci, ale nie znalazłem nic co by mogło tu pomóc.
Czy macie jakieś wskazówki jak się z tym uporać?
Z góry dziękuję bardzo za pomoc.
Pozdrawiam

//EDIT:

Właśnie zauważyłem, że plik xml.php urywa XML, którego dostaje z webserwisów. Kod funkcji zaciągającej dane z tego webserwisu:
  1. <?php
  2. function socketpost($domain,$portno,$method,$url,$data)
  3.        {
  4.                $http_request = "";
  5.                $http_response = "";
  6.                // building POST-request:
  7.                $http_request.= $method." ".$url ." HTTP/1.0r\n";
  8.                $http_request.= "Content-type: application/x-www-form-urlencodedr\n";
  9.                $http_request.="Content-length: ".strlen($data)."r\n";
  10.                $http_request.= "Cache-Control: no-cacher\n";
  11.                $http_request.= "User-Agent: MSIEr\n";
  12.                $http_request.="Connection: closer\n";
  13.                $http_request.="r\n";
  14.                $http_request.= $data."r\n";
  15.  
  16.                $fp = fsockopen($domain, $portno,$errno, $errstr);
  17.                if($fp)
  18.                {
  19.                        fputs($fp, $http_request);
  20.                        while (!feof($fp)) $http_response .= fgets($fp, 128);
  21.                        fclose($fp);
  22.                }
  23.                else
  24.                {
  25.                         error_log("function:socketpost||socketerror|ERROR: $errno - $errstr\n");
  26.                }
  27.                $response=split("r\nr\n",$http_response);
  28.  
  29.                $header=$response[0];
  30.                $responsecontent=trim($response[1]);
  31.                return $responsecontent;
  32.        }
  33. ?>


EDIT:

No i udało się naprawić funkcję winksmiley.jpg Może się komuś kiedyś przyda:
  1. <?php
  2. function socketpost($domain,$portno,$method,$url,$data)
  3.        {
  4.                $http_request = "";
  5.                $http_response = "";
  6.                // building POST-request:
  7.                $http_request.= $method." ".$url ." HTTP/1.0r\n";
  8.                $http_request.= "Content-type: application/x-www-form-urlencodedr\n";
  9.                $http_request.="Content-length: ".strlen($data)."r\n";
  10.                $http_request.= "Cache-Control: no-cacher\n";
  11.                $http_request.= "User-Agent: MSIEr\n";
  12.                $http_request.="Connection: closer\n";
  13.                $http_request.="r\n";
  14.                $http_request.= $data."r\n";
  15.  
  16.                $fp = fsockopen($domain, $portno,$errno, $errstr);
  17.                if($fp)
  18.                {
  19.                        fputs($fp, $http_request);
  20.                        while (!feof($fp)) {
  21.                        $http_response .= fgets($fp, 512);
  22.                        }
  23.                        
  24.                        fclose($fp);
  25.                }
  26.                else
  27.                {
  28.                         error_log("function:socketpost||socketerror|ERROR: $errno - $errstr\n");
  29.                }
  30.                $response=split("r\nr\n",$http_response);
  31.                
  32.                
  33.                $header=$response[0];
  34.                array_shift($response);
  35.                
  36.                $responsecontent=trim(implode("r\nr\n",$response));
  37.                return $responsecontent;
  38.  }
  39. ?>
xmik
Ja bym wrócił do manuala i poszukał czegoś o White Spaces.
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.