php ile xml (beyan xml) gönderme! em prob

3 Cevap php

Sorum aslında

Ben bir sınıf mantığı en kapalı varsa ne tür bir kapalı yapısı Ben bir REST hizmete kapalı bir parçası olarak xml göndermek için kullanabilirsiniz. Bir hizmetin talep ediliyor açık olur eğer benim php dizin sayfa kapalı üst sınıfı içerecek / diyoruz.

Someone mentioned to me that a class method should not output anything. Then where should I output the xml. Outside the class?

Ayrıca ben uç alma beyanı belgenin kapalı başında başlaması gerektiğini söyleyerek bir sorunu var.

The receiving end only has these two lines in the document. I do not have code to process it yet, but this already gives an error.

<?php
$url='http://www.woonbel.nl/gps/setgpsloc';
$xml =simplexml_load_string(file_get_contents($url));  
?>

I send the xml from this class as you can see, so maybe here something go's wrong, something with white lines or something else. Anyway, I need some advice how to avoid the declaration error and how to send xml if I am not supposed to do it in a method?store it in a class variable first then maybe?

<?php 
class gps {   

  public $url;   
  public $test;     

  function __construct($url) {   
    $this->url = $url;   
   }   

  function invoke($methode_naam) {   
  switch($methode_naam){

  case "test":
  $this->setgpsloc();

  break;
   case "setgpsloc":
  header('Content-type: text/xml');     


$status_code = 2;
        $output= "<?xml version=\"1.0\"encoding=\"utf-8\"?>\n";
        $output.= "<response>\n";
        $output.= "\t<status>$status_code</status>\n";
        $output.= "\t<fout>Geen</fout>\n";
        $output.= "</response>";
        echo trim($output);     


  }


  }//EINDE invoke 



}   

?> 

Bu bir hizmet talep olup olmadığını tespit ve sınıf aramak nasıl

<?php
//WEBSERVICE SECTIE
$url = $_GET['url']; 
$parts = split('/', $url); // Opslaan van delen van de aangevraagde url in $parts
$cparts=count($parts);   
//if($cparts>=2){
$controller = $parts[0];
$wslijst=array("gps","gebruikers");
if(in_array($controller,$wslijst)){
    include $controller .".php";
    $clr = new $controller("test");
    $clr->invoke($parts[1]);
    exit();  
    }
//other code underneath for displaying normal page

?>

Bu gerçek hata uç alma olsun kullanıcısının

PHP Uyarı: simplexml_load_string () [function.simplexml-load-string]: Varlık: satır 4: ayrıştırıcı hatası: XML bildirimi sadece D belgenin başında izin: \ Domains \ tsa.nl \ wwwroot \ index.php on hat 4 PHP Warning: simplexml_load_string () [function.simplexml-load-string]: D: \ Domains \ tsa.nl \ wwwroot \ index.php on line 4 PHP Warning: simplexml_load_string () [function.simplexml yük-string ]: ^ D: \ Domains \ tsa.nl \ wwwroot \ index.php on line 4

3 Cevap

As in "http://www.woonbel.nl/gps/setgpsloc", you have blank spaces before the XML declaration. I recommend you trim (http://php.net/trim) your output.

    //Edit, you forgot a space between \" and encoding bellow
    $output = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
                  //-----------------^
    $output .= "<response>\n";
    $output .= "\t<status>$status_code</status>\n";
    $output .= "\t<fout>Geen</fout>\n";
    $output .= "</response>";
    echo trim($output);

Başka bir şey belki bu çıkışları gönderiyor kodunuzda varsa, bir tampon üzerinde alabilirsiniz:

    //In the beginning of your script
    ob_start();

    //In the end of your script
    $output = ob_get_clean();
    echo trim($output);

Bizim sorunumuz ben olmamdı aynı olduğu iyi bir şans var. Beklendiği gibi çözüm çok basit oldu. Sitemde her sayfada ben siteyi ayrıştırmak ve yönetmek için yapılan bazı sınıfları ile bir dosyayı require__once. Bu dosya sağ kapanış php etiketi ?> sonra 'bir boşluk vardı

Bu alan script dışında olduğu gibi, o gerektiren denirdi varsayılan belgeye dahil edildi. Yani, sen gerektiren / dahil tüm dosyaların sonunda kontrol. Benim sayfaları artık sorunsuz <?xml ilan ediyoruz. BT İLK ŞEY OLMAK ZORUNDA!

Here is my validation: W3C VALIDATOR TO MY PAGE
You can find the site link there as well (it is my father's band site.. lol)

Yani, DIŞ herhangi bir boşluk veya yeni satır kontrol o içerir kullanarak (gelen veya ihtiyaç olduğu <?PHP ?> olduğunu ayrıştırmak muhtemelen olduğunu komut dosyası dışında, html belge üzerinde (ve ayrıştırmak ya da başka bir şey çalıştırmadan önce, Dosyayı dahil zaman o geldi, bu yüzden) Size kırpma yapıyorsun, her şey bu durumda üzerinde güç ve kapsam dışındadır 'önce' olduğunu.

PS: Eğer Validator kontrol edin ve ardından sayfasına gidin ve kaynak kodu kontrol ederseniz, <?xml beyanı göreceksiniz, My sayfalar (HTML içinde hiçbir PHP) çözümlenir% 100 bulunmaktadır.

Hope this helps... Cheers! :)

Peki, çabuk cevap size hataya neden olan belge içinde "

[GÜNCELLEME] ben yorum isterdim, ancak verilen diğer cevap getirmedi, çıktı tamponlama ve süsleme kesinlikle sorunu çözecektir, ama daha iyi bir çözüm boşluklarla bu ekstra 4 hat amaçlanan (hiçbir hakaret nereden geldiğini anlamaya olurdu ama çıkış tampon düzeltme) bir yara bandı çözümün bir parçasıdır