"PHP로 XML 생성"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 2개는 보이지 않습니다)
105번째 줄: 105번째 줄:


$xml = $doc->saveXML();
$xml = $doc->saveXML();
header('Content-type: text/xml');
echo $xml;
echo $xml;
</syntaxhighlight>
</syntaxhighlight>
113번째 줄: 112번째 줄:
*[[XML]]
*[[XML]]


==주석==
==참고==
<references/>


[[분류: PHP]]
[[분류: PHP XML]]
[[분류: XML]]

2021년 9월 11일 (토) 21:34 기준 최신판

PHP로 XML 생성, PHP에서 XML 생성
PHP XML 출력

1 방법 1: echo[ | ]

수동으로 XML 문자열 구성

<?php
$xml = "<?xml version='1.0' encoding='UTF-8'?>";
$xml .= "<quiz>";
$xml .= "<question>대한민국의 초대 대통령은?</question>";
$xml .= "<answer>이승만</answer>";
$xml .= "<url>http://jmnote.com/wiki/PHP로_XML_생성</url>";
$xml .= "</quiz>";
header('Content-type: text/xml');
echo $xml;

2 방법 2: array_xml[ | ]

배열을 XML형식으로 바꾸어주는 array_xml 함수 이용[1]

<?php
function array_xml($arr, $num_prefix = "num_") {
	if(!is_array($arr)) return $arr;
	$result = '';
	foreach($arr as $key => $val) {
		$key = (is_numeric($key)? $num_prefix.$key : $key);
		$result .= '<'.$key.'>'.array_xml($val, $num_prefix).'</'.$key.'>';
	}
	return $result;
}
$xml = array( 'quiz'=> array(
	'question' => '대한민국의 초대 대통령은?',
	'answer' => '이승만',
	'url' => 'http://jmnote.com/wiki/PHP로_XML_생성'
));
header('Content-type: text/xml'); 
echo "<?xml version='1.0' encoding='UTF-8'?>\n";
echo array_xml($xml);

3 방법 3: XmlConstruct[ | ]

XMLWriter를 상속하여 편의성을 높인 XmlConstruct 클래스를 이용[2]

<?php 
class XmlConstruct extends XMLWriter { 
    public function __construct($prm_rootElementName, $prm_xsltFilePath='') {
        $this->openMemory(); 
        $this->setIndent(true); 
        $this->setIndentString(' '); 
        $this->startDocument('1.0', 'UTF-8'); 
        if($prm_xsltFilePath) $this->writePi('xml-stylesheet', 'type="text/xsl" href="'.$prm_xsltFilePath.'"'); 
        $this->startElement($prm_rootElementName); 
    } 
    public function setElement($prm_elementName, $prm_ElementText) {
        $this->startElement($prm_elementName); 
        $this->text($prm_ElementText); 
        $this->endElement(); 
    } 
    public function fromArray($prm_array) {
      if(!is_array($prm_array)) return;
      foreach ($prm_array as $index => $element) {
        if(is_array($element)) {
          $this->startElement($index); 
          $this->fromArray($element); 
          $this->endElement(); 
        } 
        else $this->setElement($index, $element); 
      } 
    } 
    public function getDocument() {
        $this->endElement(); 
        $this->endDocument(); 
        return $this->outputMemory(); 
    } 
    public function output() {
        header('Content-type: text/xml'); 
        echo $this->getDocument(); 
    } 
} 
$contents = array(
    'question' => '대한민국의 초대 대통령은?',
    'answer' => '이승만',
    'url' => 'http://jmnote.com/wiki/PHP로_XML_생성'
); 
$XmlConstruct = new XmlConstruct('quiz'); 
$XmlConstruct->fromArray($contents); 
$XmlConstruct->output();

4 방법 4: DomDocument[ | ]

$doc = new DomDocument('1.0', 'UTF-8');
$quiz = $doc->createElement('quiz');
$doc->appendChild($quiz);

$question = $doc->createElement('question', '대한민국의 초대 대통령은?');
$answer = $doc->createElement('answer', '이승만');
$url = $doc->createElement('url', 'http://jmnote.com/wiki/PHP로_XML_생성');
$quiz->appendChild($question);
$quiz->appendChild($answer);
$quiz->appendChild($url);

$xml = $doc->saveXML();
echo $xml;

5 같이 보기[ | ]

6 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}