如何使用PHP动态生成XML文件?
如何使用PHP动态生成XML文件?
我需要在运行时动态生成XML文件。请使用PHP帮助我动态生成以下XML文件。
song1.mp3 song2.mp3 song3.mp3 song4.mp3 song5.mp3 song6.mp3 song7.mp3 song8.mp3
admin 更改状态以发布 2023年5月20日
在PHP中创建XML文档需要实例化DOMDocument类,创建子节点并将这些节点附加到文档树的正确分支。
参考资料可以阅读https://www.php.net/manual/en/book.dom.php
现在我们将快速浏览下面的代码。
- 在第2行,我们创建一个空的xml文档(只指定了xml版本(1.0)和编码(utf8))
- 现在我们需要填充xml树:
- 我们必须创建一个xml节点(第5行)
- 并将其附加到正确的位置。我们正在创建根节点,因此将其直接附加到domdocument中。
- 请注意,createElement方法将元素附加到节点并返回插入的节点,我们保存此引用以将track节点附加到根节点(顺便称为xml)。
这些是基础知识,您可以仅用一行代码创建和附加节点(例如,第13行),您可以使用dom api做很多其他事情。由你决定。
createElement("xml"); /* append it to the document created */ $xmlRoot = $domtree->appendChild($xmlRoot); /* you should enclose the following lines in a loop */ $currentTrack = $domtree->createElement("track"); $currentTrack = $xmlRoot->appendChild($currentTrack); $currentTrack->appendChild($domtree->createElement('path','song1.mp3')); $currentTrack->appendChild($domtree->createElement('title','title of song1.mp3')); $currentTrack = $domtree->createElement("track"); $currentTrack = $xmlRoot->appendChild($currentTrack); $currentTrack->appendChild($domtree->createElement('path','song2.mp3')); $currentTrack->appendChild($domtree->createElement('title','title of song2.mp3')); /* get the xml printed */ echo $domtree->saveXML(); ?>
编辑:
还有一个提示:
使用xmldocument(dom文档或simplexml文档)的主要优点之一而不是打印xml是,可以使用xpath查询搜索xml树
我会使用SimpleXMLElement。
'); 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()); ?>
$xml->asXML()
也可以接受一个文件名作为参数来保存到该文件。