2013-10-24 129 views
0

我试图用URL中的某些元素创建一个文件(如果它已经存在,覆盖)..与我一起,我在学习PHP。使用PHP创建XML文件

的网址给我一个RSS feed是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