문제

브라우저에 출력하기 위해 CakePHP에서 동적 XML 문서를 생성하려고 합니다.

내 컨트롤러 코드는 다음과 같습니다.

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

보기는 다음과 같습니다.

<abc>
     something
</abc>

출력은 아마도 예상한 대로일 것입니다.

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

유일한 문제는 앞에 공간이 있다는 것입니다 <?xml 나에게 오류가 발생했습니다.

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

나는 PHP에서 이 문제를 알고 있습니다. php-start 및 종료 태그가 있으면 공백이 생기고 문제가 발생하므로 줄을 이동하려고 했습니다. echo "<?xml ver... 이를 피하기 위해 뷰에서 컨트롤러로 이동했지만 도움이 되지 않았습니다.

미리 감사드립니다.-happyhardik

도움이 되었습니까?

해결책

예, 문제는 PHP 끝 태그 어딘가에 공간이어야합니다.

PHP 엔드 태그는 필수가 아니기 때문에 모든 모델에서 엔드 태그를 제거합니다 (있는 경우), app_controller.php 및 app_model.php에서 요청하는 컨트롤러와 View Helpers ... 어딘가에 있어야하지만 찾기가 쉽지 않습니다.

편집하다: 실제로 PHP가 시작된 태그 전에 공간이 될 수 있습니다. 해당 파일을 살펴보고 시작 태그가 파일의 절대 시작에 있는지 확인하십시오.

다시 편집하십시오: 당신을 위해 그것을 자동으로 수행하기 위해 몇 가지 스크립트를 만든 사람들이 있습니다.

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

다른 팁

실제로, 나는 그것이 레이아웃 파일에서 닫힌 후 가장 자주 공간이라는 것을 알았습니다.

또한 lours.php에서 requestHandler 구성 요소 및 라우터 :: parseExtensions ( 'XML')를 사용하는 경우 XML 뷰에서 XMLHelper를 자동으로 가져옵니다.

XMLHELPER에는 몇 가지 깔끔한 기능이 있습니다. 확인 해봐.

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

RequestHandler 구성 요소 및 XMLHelper의 링크

http://book.cakephp.org/view/174/request-handling

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

비록 이것이 질문에 직접적으로 대답하지는 않지만.나는 사람들이 위의 경우처럼 수동으로 수행하기를 원하지 않는 경우를 대비하여 CakePHP JSON 및 XML 뷰 도우미를 사용하여 동적 XML 뷰를 자동으로 생성하는 것이 얼마나 쉬운지 언급할 가치가 있다고 생각했습니다.

  • 1단계:추가하다 Router::parseExtensions(); Routes.php 파일에
  • 2단계:다음을 추가하여 RequestHandler 구성요소가 관련 카운터롤러에 포함되어 있는지 확인하세요. public $components = array('RequestHandler');
  • 3단계:이제 일부 데이터만 로드한 다음 자동으로 데이터를 XML 또는 JSON으로 표시하면 됩니다.아래와 같은 것을 추가합니다.

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

이것이 문자 그대로 xml_view 작업에 대한 XML 또는 JSON 응답을 생성하기 위해 수행해야 하는 전부입니다.뷰 파일을 설정할 필요도 없습니다.요청이 .../controller/xml_view.xml이면 CakePHP는 XML 문서를 반환하고, .json이 확장자인 경우 JSON 응답이 생성됩니다.너무 쉬워서 믿을 수가 없어요!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top