2017-05-16 2 views
0

PHP를 사용하여 XML 파일을 생성하려고하는데 설명 요소가 CDATA에 배치됩니다.XML을 생성 할 때 createCDATASection이 정의되지 않았습니다.

<?php 

$title = "Volvo"; 
$description = "this is a test description"; 

$xml = new SimpleXMLElement('<xml/>'); 
    $track = $xml->addChild('blog'); 
    $post = $track->addChild('post'); 
    $post->addChild('title',$title); 
    $cdata = createDATASection($description); 
    $post->addChild('description',$cdata); 

$xml->asXml(); 
?> 

createDATASection을 올바르게 사용하고 있습니까? 나는 다른 방법을 시도해 봤지만 나는 아직도 그것을 얻지 못하고있다.

답변

0

createCDATASection()DOMDocument의 방법입니다. SimpleXML 자체는 제한적입니다. 특정 노드 유형을 만드는 것과 같이 많은 제어가 필요한 경우 DOM을 사용해야합니다. SimpleXML은 XML을 단순한 요소 트리로 취급합니다. DOM에서 모든 것은 노드, 요소, 텍스트, 속성, 주석, ...

DOM에서는 생성과 추가가 구분됩니다. DOMDocument의 해당 메서드로 새 노드 (모든 유형의)를 만든 다음 부모 노드의 메서드를 사용하여 추가합니다. 추가 메소드는 노드를 리턴하므로 호출을 중첩 할 수 있습니다. 여기

은 귀하의 예제 소스는 DOM API 호출로 변환됩니다

$title = "Volvo"; 
$description = "this is a test description"; 

$document = new DOMDocument(); 
$xml = $document 
    ->appendChild($document->createElement('xml')); 
$blog = $xml 
    ->appendChild($document->createElement('blog')); 
$track = $blog 
    ->appendChild($document->createElement('track')); 
$post = $track 
    ->appendChild($document->createElement('post')); 
$post 
    ->appendChild($document->createElement('title')) 
    ->appendChild($document->createTextNode($title)); 
$post 
    ->appendChild($document->createElement('description')) 
    ->appendChild($document->createCDATASection($description)); 

$document->formatOutput = TRUE; 
echo $document->saveXml(); 

출력 :

<?xml version="1.0"?> 
<xml> 
    <blog> 
    <track> 
     <post> 
     <title>Volvo</title> 
     <description><![CDATA[this is a test description]]></description> 
     </post> 
    </track> 
    </blog> 
</xml> 
관련 문제