CakePHP'de üreten xml hatası - boşluk

3 Cevap php

Ben tarayıcıya çıktı CakePKP'deki dinamik bir xml belge oluşturmak için çalışıyorum.

İşte benim denetleyicisi kodu:

Configure::write ('debug', 0);
$this->layout = null;
header('Content-type: text/xml');
echo "<?xml version=\"1.0\"?>";

Görünüm bu gibi bir şeydir:

<abc>
     something
</abc>

Çıktı muhtemelen beklenir:

<?xml version="1.0"?><abc>something</abc>

Tek sorun, bir boşluk <?xml bana bir hata vermeden önce olmasıdır:

XML Parsing Error: XML or text declaration not at start of entity
Line Number 1, Column 2:
 <?xml version="1.0"?><abc> something </abc>
-^

Eğer bir boşluk bırakır ve sorunlar yaratır php-başlangıç ​​ve bitiş etiketleri varsa ben, PHP bu sorunu biliyor, bu yüzden, ben önlemek için {[(0)}] görünümünden kontrolör çizgiyi taşımak için çalıştı ama yapmadım 't yardım.

Thanks in advance. -happyhardik

3 Cevap

Evet, sorun bir yerde php bitiş etiketinden sonra bir boşluk olmalıdır.

Php bitiş etiketi zorunlu değil gibi (varsa eğer), tüm modellerde herhangi bir bitiş etiketi kaldırmak, app_controller.php ve app_model.php konumunda yer alır gelen ve görünümü yardımcılardan hakkında soruyorsun kontrolör, ... Bu bir yerde olmalı ama bulmak kolay değil gerekir

EDIT: php, etiketi başlayacak bu dosyalara bakmak ve başlar etiket dosyasının mutlak başında olduğunu kontrol önce Aslında aynı zamanda bir uzay olabilir

EDIT AGAIN: sizin için otomatik olarak yapmak için bazı komut oluşturduk insanlar için bir göz atın, vardır:

http://ragrawal.wordpress.com/2007/11/07/script-for-removing-blank-spaces-before-and-after-php-tags/

Aslında, en sık kapanış SONRA bir boşluk olduğunu bulmak?> Etiketi düzeni dosyası.

Ayrıca size routes.php yılında RequestHandler bileşeni ve Router :: parseExtensions ('xml') kullanıyorsanız otomatik olarak xml görünümlerde kullanmak için XmlHelper alacak bilmeli.

XmlHelper içinde birkaç temiz fonksiyonları vardır. Check it out.

<?php
    echo( $xml->header( ));
    // outputs <?xml version="1.0" encoding="UTF-8" ?>
?>

RequestHandler Bileşen ve XmlHelper için bağlantılar

http://book.cakephp.org/view/174/Request-Handling

http://book.cakephp.org/view/380/XML

Bu doğrudan soruya cevap vermez bile. Yukarıdaki durum gibi görünüyor gibi insanlar el yapıyor olmak istemiyorum sadece durumda, o CakePHP JSON ve XML görünümleri yardımcı kullanarak otomatik olarak dinamik XML görünümlerini oluşturmak için ne kadar kolay olduğunu kayda değer olacağını düşündüm.

  • Adım bir: senin routes.php dosyasına Router::parseExtensions(); Ekle
  • İkinci adım: emin RequestHandler bileşen ekleyerek, ilgili countroller dahildir public $components = array('RequestHandler');
  • Adım üç: Şimdi sadece bazı verileri yüklemek ve daha sonra otomatik olarak XML veya JSON gibi verileri görüntülemek zorunda. Aşağıdaki gibi bir şey ekle:

    public function xml_view () {
       $this->set('data_array', $this->Model->find('all'));
       $this->set('_serialize', array('data_array'));       
    }
    

Bu anlamıyla biz xml_view eylem için bir XML veya JSON karşılığına oluşturmak için yapmanız gerekenler. Bir görünüm dosyası kurmak için bile gerekli değildir. İsteğiniz zaman ... / denetleyici / xml_view.xml sonra CakePHP bir XML belgesi dönecektir, ve. Json uzantısı olduğunda, bir JSON yanıt oluşturmak olacaktır. Ben inanamıyorum bu kadar kolay!