2011-08-17 2 views
7

와 PHP와 XML 파일에 추가하기 파일. 내가 simplexml 사용했는데 그것을 작동시키지 못했습니다, 그래서이 answer뿐만 아니라 bunch 다른 사람 stackoverflow에 시도했다. 그러나 그냥 기울여서 일하게하십시오.
xml 파일에서 쉽게 읽을 수 있고 필요한 모든 정보를 얻을 수 있지만 갤러리 태그를 추가 할 수 있어야합니다. 아래의 코드는 작동하지 않으며 코드가 삽입되면 1 개의 요소 만 삽입 할 수 있습니다. 그것은 그것을 3 번 삽입한다, 나는 이것을 이해하지 않는다.어떻게이처럼 보이는 XML 파일이 바람직 SimpleXML을

$data = 'xml/config.xml'; 
// Load document 
$xml = new DOMDocument; 
$xml->load($data); #load data into the element 

$xpath = new DOMXPath($xml); 
$results = $xpath->query('/data/galleries'); 
$gallery_node = $results->item(0); 

$name_node = $xml->createElement('name'); 
$name_text = $xml->createTextNode('nametext'); 

$name_node = $name_node->appendChild($name_text); 

$gallery_node->appendChild($name_node); 

echo $xml->save($data); 

이 경우 실패한 시도가 너무 많습니다. 너무 쉽습니다. 기본적으로 childs 파일 경로와 엄지 손가락을 가진 갤러리를이 동일한 파일 (xml/config.php)에 추가하려고합니다.

내가 말했듯이, 나는 일을 좀해야하지만, 형식이 지정되지 않고 갤러리 태그가 없습니다.

질문
어떻게 위의 XML 파일에> (아이들과) 다른 < 갤러리를 삽입합니까?
SimpleXML을 사용해도 좋습니다.

답변

14

SimpleXML에서는 addChild() 메서드를 사용할 수 있습니다.

$file = 'xml/config.xml'; 

$xml = simplexml_load_file($file); 

$galleries = $xml->galleries; 

$gallery = $galleries->addChild('gallery'); 
$gallery->addChild('name', 'a gallery'); 
$gallery->addChild('filepath', 'path/to/gallery'); 
$gallery->addChild('thumb', 'mythumb.jpg'); 

$xml->asXML($file); 

에 깔끔하게 들여 XML은 복잡한 단계 아니며 많은 여기에 질문에 덮여 SimpleXML이가 "형식"당신을위한 XML은 그러나 포맷되지 않은 SimpleXML을 표현에서하지 않을 것이라는 점을 알고 있어야합니다 .

+0

이것은 작동합니다! 하지만 그것은 내 XML에서 3 번 출력, 왜 그것을 할 것이라고 모든 아이디어? 과 아이들을 같은 줄에 3 세트 출력합니다. 위의 스크립트에도이 작업을 수행 했습니까? 모든 단서? – Anil

+2

아마도 루프에서 뭔가 잘못하고있을 것입니다. 당신이 보여 주거나 내가 준 갤러리 요소를 세 번 반복하지 않습니다. – salathe

관련 문제