2010-01-10 6 views
27

새 XML 파일을 만들어 내 서버에 써야합니다. 그래서, 새로운 XML 파일을 생성하고, 기본 노드를 작성하여 저장하는 가장 좋은 방법을 찾고 있습니다. 그런 다음 다시 열어서 더 많은 데이터를 작성하십시오.새 XML 파일을 작성하고 그것에 데이터를 씁니 까?

나는 file_put_contents()을 사용하여 파일을 저장했습니다. 그러나 새 노드를 만들고 기본 노드를 작성하는 것이 가장 좋은 방법인지는 잘 모르겠습니다.

아이디어가 있으십니까?

답변

58

DOMDocument은 좋은 선택입니다. XML 문서를 만들고 조작하기 위해 특별히 고안된 모듈입니다. 처음부터 문서를 만들거나 기존 문서 (또는 문자열)를 열고 구조를 탐색하고 수정할 수 있습니다.

$xml = new DOMDocument(); 
$xml_album = $xml->createElement("Album"); 
$xml_track = $xml->createElement("Track"); 
$xml_album->appendChild($xml_track); 
$xml->appendChild($xml_album); 

$xml->save("/tmp/test.xml"); 

은 다시 열고 작성하려면 :

$xml = new DOMDocument(); 
$xml->load('/tmp/test.xml'); 
$nodes = $xml->getElementsByTagName('Album') ; 
if ($nodes->length > 0) { 
    //insert some stuff using appendChild() 
} 

//re-save 
$xml->save("/tmp/test.xml"); 
+0

어떻게 모든 것이 한 줄에 기록되는 것이 아니라, 내 문서의 XML 구조를 유지합니까? –

+4

DOMDocument 객체의 "formatOutput"속성을 설정합니다 :'$ xml-> formatOutput = true'. http://ca.php.net/manual/en/class.domdocument.php#domdocument.props.formatoutput – zombat

+0

조금 늦었지만 튜토리얼을 읽고 싶다면 여기를 참조하십시오. https://programmerblog.net/how-to-generate-xml-files-using-php/ –

13

PHP는 XML Manipulation에 대한 몇 가지 라이브러리가 있습니다.

Document Object Model (DOM) 접근법 (W3C 표준이며 웹 브라우저 나 Java와 같은 다른 환경에서 사용했다면 익숙해야 함).

<?php 
    $doc = new DOMDocument(); 
    $ele = $doc->createElement('Root'); 
    $ele->nodeValue = 'Hello XML World'; 
    $doc->appendChild($ele); 
    $doc->save('MyXmlFile.xml'); 
?> 

을 다음과 같이 이전에 DOM 건너하지 않은 경우에도 사용자가 문서를 만들 수 있습니다,이 모델이 많은 언어/환경에서 사용되는 거기에 약간의 시간을 투자 가치가있다.

2

FluidXML을 사용하면 매우 쉽게 XML 문서를 생성하고 저장할 수 있습니다.

$doc = fluidxml(); 

$doc->add('Album', true) 
     ->add('Track', 'Track Title'); 

$doc->save('album.xml'); 

파일에서 문서를로드하는 것은 똑같이 간단합니다.

$doc = fluidify('album.xml'); 

$doc->query('//Track') 
     ->attr('id', 123); 

https://github.com/servo-php/fluidxml

관련 문제