如何使用PHP动态生成XML文件?

2022-08-30 06:10:28

我必须在运行时动态生成一个xml文件。请帮助我使用PHP动态生成以下XML文件。

<?xml version="1.0" encoding="UTF-8"?>
<xml>
 <track>
     <path>song1.mp3</path>
     <title>Track 1 - Track Title</title>
 </track>
 <track>
     <path>song2.mp3</path>
     <title>Track 2 - Track Title</title>
 </track>
 <track>
     <path>song3.mp3</path>
     <title>Track 3 - Track Title</title>
 </track>
 <track>
     <path>song4.mp3</path>
     <title>Track 4 - Track Title</title>
 </track>
 <track>
     <path>song5.mp3</path>
     <title>Track 5 - Track Title</title>
 </track>
 <track>
     <path>song6.mp3</path>
     <title>Track 6 - Track Title</title>
 </track>
 <track>
     <path>song7.mp3</path>
     <title>Track 7 - Track Title</title>
 </track>
 <track>
     <path>song8.mp3</path>
     <title>Track 8 - Track Title</title>
 </track>


答案 1

我会使用SimpleXMLElement

<?php

$xml = new SimpleXMLElement('<xml/>');

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()还可以将文件名作为参数保存到该文件


答案 2

要在PHP中创建XMLdocument,您应该实例化DOMDocument类,创建子节点并将这些节点追加在文档树的正确分支中。

作为参考,您可以阅读 http://it.php.net/manual/en/book.dom.php

现在,我们将快速浏览下面的代码。

  • 在第2行,我们创建一个空的xml文档(只需指定xml版本(1.0)和编码(utf8))
  • 现在我们需要填充 xml 树:
    • 我们必须创建一个 xmlnode(第 5 行)
    • 我们必须将其附加到正确的位置。我们正在创建根,因此我们将其直接附加到 domdocument。
    • 注意创建元素将元素追加到节点并返回插入的节点,我们保存此引用以将跟踪节点追加到根节点(顺便称为xml)。

这些是基础知识,您可以在一行中创建和追加节点(例如,第13个),您可以使用dom api做很多其他事情。这取决于你。

<?php    
    /* create a dom document with encoding utf8 */
    $domtree = new DOMDocument('1.0', 'UTF-8');

    /* create the root element of the xml tree */
    $xmlRoot = $domtree->createElement("xml");
    /* append it to the document created */
    $xmlRoot = $domtree->appendChild($xmlRoot);



    /* you should enclose the following lines in a cicle */
    $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();
?>

编辑:只是另一个提示:使用xml文档(dom文档一个或simplexml文档)而不是打印xml的主要优点是xpath查询可以搜索xml树


推荐