2013-10-24 4 views
0

Я пытаюсь создать файл (если он уже существует, переписать) с определенными элементами из URL-адреса .. У меня со мной, я изучаю php.Создание XML-файла с использованием PHP

URL, дает мне RSS-канал, который находится в формате XML, я хочу, чтобы просто скопировать этот XML и использовать его для создания файла XML с именем «кормить»

<?php 

libxml_use_internal_errors(true); 

$xml = simplexml_load_file("http://mysite.com/feeds/posts/default?alt=rss"); 
if ($xml === false) { 
foreach (libxml_get_errors() as $error) { 
echo "Error: " . $error->message . "<br />"; 
} 
} 

print_r($xml); 

?> 

Это то, что у меня есть, пока он просто читает файл, мне просто нужны команды для копирования определенных элементов и вставки их в файл и просто его имя. Я нашел этот раздел кода, который мне помогает, но как мне получить информацию из элементов исходного документа xml?

Мол, есть ли команды, которые напоминают что-то вроде:

$title=(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue); 
$artist=(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue); 
$album=(x[i].getElementsByTagName("ALBUM")[0].childNodes[0].nodeValue); 
$track=(x[i].getElementsByTagName("TRACK")[0].childNodes[0].nodeValue); 

Так что я могу позже сделать что-то вроде:

$xml = new DOMDocument(); 
$xml_album = $xml->createElement($artist); 
$xml_album = $xml->createElement($album); 
$xml_track = $xml->createElement($track); 
$xml_album->appendChild($xml_track); 
$xml->appendChild($xml_album); 

$xml->save("rootFolder/xmls/"+$title ".xml"); 

Как я могу это устроить?

* Альбом является дочерью художника, трек является дочерним по отношению к альбому.

Спасибо вам за ваше время!

ответ

0

Как обычно the manual is a great place to start.

В основном simplexml_load_file возвращает объект SimpleXMLElement, поэтому вам не нужно использовать getElementsByTagName (то есть для объекта DOMDocument). Вы сможете получить доступ узлов, как это (делает некоторый документ структуры здесь):

$xml->artists[0]->albums->album[0]->title; 

Вы можете получить доступ к каждому узлу в документе XML и изменить их или добавить больше. Затем вы можете сохранить его следующим образом:

$xml->asXml('artists.xml'); 
+0

Удивительный, спасибо! Если я хочу добавить, если что-то сохранить, это можно сделать так? $ xml-> asXml ($ filename. '.xml') ;? – user1876553

+0

Несомненно, параметр может быть переменной, которая содержит имя файла. Но вы должны знать, где вы его пишете, если хотите, чтобы использовать его позже;) –

+0

Два последних вопроса! 1. Я понимаю, что $ character = $ movies-> movie [0] -> characters-> addChild ('character'); $ character-> addChild ('name', 'Mr. Parser'); $ character-> addChild ('actor', 'John Doe'); добавляет в документ, есть ли способ распечатать его в формате, а не в одной строке? – user1876553

Смежные вопросы