PHP를 사용하여 XML 파일을 동적으로 생성하는 방법은 무엇입니까?
런타임에 XML 파일을 동적으로 생성해야합니다. PHP를 사용하여 아래 XML 파일을 동적으로 생성하는 데 도움을주십시오.
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<track>
<path>song1.mp3</path>
<title>Track 1 - Track Title</title>
</track>
<track>
<path>song2.mp3</path>
<title>Track 2 - Track Title</title>
</track>
<track>
<path>song3.mp3</path>
<title>Track 3 - Track Title</title>
</track>
<track>
<path>song4.mp3</path>
<title>Track 4 - Track Title</title>
</track>
<track>
<path>song5.mp3</path>
<title>Track 5 - Track Title</title>
</track>
<track>
<path>song6.mp3</path>
<title>Track 6 - Track Title</title>
</track>
<track>
<path>song7.mp3</path>
<title>Track 7 - Track Title</title>
</track>
<track>
<path>song8.mp3</path>
<title>Track 8 - Track Title</title>
</track>
SimpleXMLElement를 사용 합니다.
<?php
$xml = new SimpleXMLElement('<xml/>');
for ($i = 1; $i <= 8; ++$i) {
$track = $xml->addChild('track');
$track->addChild('path', "song$i.mp3");
$track->addChild('title', "Track $i - Track Title");
}
Header('Content-type: text/xml');
print($xml->asXML());
PHP에서 XML 문서를 생성하려면 DOMDocument 클래스를 인스턴스화하고 자식 노드를 생성 한 다음이 노드를 문서 트리의 올바른 분기에 추가해야합니다.
참고로 http://it.php.net/manual/en/book.dom.php 를 읽을 수 있습니다
이제 아래 코드를 간단히 살펴 보겠습니다.
- 2 행에서 빈 xml 문서를 만듭니다 (xml 버전 (1.0) 및 인코딩 (utf8) 만 지정)
- 이제 xml 트리를 채워야합니다.
- xmlnode를 만들어야합니다 (5 행)
- 올바른 위치에 추가해야합니다. 우리는 루트를 만들고 있으므로 이것을 domdocument에 직접 추가합니다.
- create element는 요소를 노드에 추가하고 삽입 된 노드를 반환합니다. 트랙 노드를 루트 노드에 추가하기 위해이 참조를 저장합니다 (우연히 xml이라고 함).
이것들은 기본이며, 한 줄로 노드를 만들고 추가 할 수 있습니다 (예 : 13 번째) .dom api로 다른 많은 일을 할 수 있습니다. 너하기에 달렸다.
<?php
/* create a dom document with encoding utf8 */
$domtree = new DOMDocument('1.0', 'UTF-8');
/* create the root element of the xml tree */
$xmlRoot = $domtree->createElement("xml");
/* append it to the document created */
$xmlRoot = $domtree->appendChild($xmlRoot);
$currentTrack = $domtree->createElement("track");
$currentTrack = $xmlRoot->appendChild($currentTrack);
/* you should enclose the following two lines in a cicle */
$currentTrack->appendChild($domtree->createElement('path','song1.mp3'));
$currentTrack->appendChild($domtree->createElement('title','title of song1.mp3'));
$currentTrack->appendChild($domtree->createElement('path','song2.mp3'));
$currentTrack->appendChild($domtree->createElement('title','title of song2.mp3'));
/* get the xml printed */
echo $domtree->saveXML();
?>
편집 : 다른 힌트 하나 : XML을 인쇄하는 대신 xmldocument (dom 문서 하나 또는 simplexml 하나)를 사용하면 얻을 수있는 주요 이점은 xmltree를 xpath 쿼리로 검색 할 수 있다는 것입니다
이를 수행하는 쉬운 방법은 다음과 같습니다.
<?php
// Send the headers
header('Content-type: text/xml');
header('Pragma: public');
header('Cache-control: private');
header('Expires: -1');
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
echo '<xml>';
// echo some dynamically generated content here
/*
<track>
<path>song_path</path>
<title>track_number - track_title</title>
</track>
*/
echo '</xml>';
?>
.php로 저장
FluidXML 을 사용하면 XML을 매우 쉽게 생성 할 수 있습니다.
$tracks = fluidxml('xml');
$tracks->times(8, function ($i) {
$this->add([
'track' => [
'path' => "song{$i}.mp3",
'title' => "Track {$i} - Track Title"
]
]);
});
https://github.com/servo-php/fluidxml
Tiny But Strong 템플릿 시스템을 살펴보십시오 . 일반적으로 HTML 템플릿에 사용되지만 XML 파일과 작동하는 확장명이 있습니다. 하나의 코드 파일과 두 개의 템플릿 파일 (htm 및 xml)을 가질 수있는 보고서를 작성하는 데 광범위하게 사용하며 사용자는 보고서를 화면 또는 스프레드 시트로 보낼지 여부를 선택할 수 있습니다.
또 다른 이점은 XML을 처음부터 코딩 할 필요가 없다는 것입니다. 경우에 따라 매우 큰 복잡한 스프레드 시트를 내보내고 싶었지만 모든 내보내기를 코딩하는 대신 기존 스프레드 시트를 저장하는 것만으로도 필요한 모든 내보내기 xml 및 데이터 출력이 필요한 코드 태그 대체 빠르고 효율적인 작업 방법입니다.
$query=mysql_query("select * from tablename")or die(mysql_error());
$xml="<libraray>\n\t\t";
while($data=mysql_fetch_array($query))
{
$xml .="<mail_address>\n\t\t";
$xml .= "<id>".$data['id']."</id>\n\t\t";
$xml .= "<email>".$data['email_address']."</email>\n\t\t";
$xml .= "<verify_code>".$data['verify']."</verify_code>\n\t\t";
$xml .= "<status>".$data['status']."</status>\n\t\t";
$xml.="</mail_address>\n\t";
}
$xml.="</libraray>\n\r";
$xmlobj=new SimpleXMLElement($xml);
$xmlobj->asXML("text.xml");
간단하게 데이터베이스에 연결하면 프로젝트 폴더에 test.xml 파일이 생성됩니다.
참고 URL : https://stackoverflow.com/questions/486757/how-to-generate-xml-file-dynamically-using-php
'IT story' 카테고리의 다른 글
상황에 따라 레이아웃 팽창기를 얻는 방법? (0) | 2020.04.25 |
---|---|
unique_ptr과 shared_ptr의 차이점 (0) | 2020.04.25 |
입력 크기 대 너비 (0) | 2020.04.24 |
파이썬의 트위스트에 대한 깨끗하고 가벼운 대안? (0) | 2020.04.24 |
Windows를위한 최고의 무료 C ++ 프로파일 러 란 무엇입니까? (0) | 2020.04.24 |