Dinamik xml oluşturmak ve php sınıf ile gönderin

3 Cevap php

my question is how I can send clean xml from this class. It is simplified, so there is the least off trouble that could have been caused by other things.

Sorun şimdi hata xml bildirimi belgedeki kapalı üstünde meydana gerektiğini söylüyor olmasıdır.

What is the right way to avoid this kind off errors? Is there some php function that would do this for me?

I have to mention that I am doing this the REST way. So, no hassle with soap servers, xml-rpc servers.

The first part is the instantiation off the class in the index.php.

The class is in the included file.

    <?php
include 'controller/' . 'gpsController.php';
$gps=new gpsController('eenwaarde');
$gps->setgpsloc();
exit();
?> 


<?php 
class gpsController  {   
 // extends controller
  public $url;   



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


public function setgpsloc() { 
$gebruikersnaam="kabouter";
$status_code = 2;
header('Content-type: text/xml');
    	$output= "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
    	$output.= "<response>\n";
    	$output.= "\t<status>$status_code</status>\n";
    	$output.= "\t<fout>$gebruikersnaam</fout>\n";
    	$output.= "</response>";
    	echo trim($output);
}


public function index() {
}

}   

?>

Teşekkürler, Richard

3 Cevap

Verilen kod tuhaf görünüyor. Ben "<?php" satırlar ilk satır olarak hareket edilmesi gerektiğini düşünüyorum. Ayrıca, örneğin, sizin dahil dosyaları herhangi bir kaza bazı çıkış gerçekleştirmek olmadığını kontrol etmelisiniz ilk "<?php" ya da sonra geçen "?>" önünde bir boşluk veya satır sonu alarak.

Bunun dışında, bir XML kitaplığı kullanabilirsiniz, ancak bu yalnızca XML kodu, iyi biçimlendirilmiş olmasını sağlayacaktır. Bu açık, anlaşılır XML oluşturma kodu olması çok önemlidir. Bu en iyi PHP kendisi gibi bir şablon kütüphanesi ile yapılır. :-)

<?php header('Content-type: text/xml') ?>
<?xml version="1.0" encoding="utf-8"?>
<response>
    <status><?php echo htmlspecialchars($status_code) ?></status>
    <fout><?php echo htmlspecialchars($gebruikersnaam) ?></fout>
</response>

başlığı gönderilmeden önce beyaz boşluk bir sürü dışarı yankılanıyor gibi görünüyor.

Öncelikle ilk satırı beyaz alan var önce "<?php":

    <?php

Ayrıca .. sizin ilk işlevini çalıştırmadan önce, bir include yapıyorsun dosya "<?php" önce veya "?>" ki önce tarayıcıya geri gönderilir sonra boşluk vardır dahil olmadığını fonksiyonu kısa zamanda bir yanıt göndererek başlamak gibi ... çalıştırılır ve başlık ardından varsayılan başlık php tarafından gönderilen olacak, henüz kurulmuş değil .. ve işlevi sizin başlığı ayarlamak için gittiğinizde alacak Eğer açıklayan hata.

header declarations do not have to be on the top of the document, but they have to be before any output is generated. If you are not able to find any clear output, it might be the case that there is a space or linebreak before the

Ama sizin başlık bildiriminden önce herhangi bir "çıkış" bulmak mümkün olmuştur varsa bize bildirin.