当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何使用PHP动态生成XML文件?》经验,为你挑选了4个好方法。

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



 
     song1.mp3
     Track 1 - Track Title
 
 
     song2.mp3
     Track 2 - Track Title
 
 
     song3.mp3
     Track 3 - Track Title
 
 
     song4.mp3
     Track 4 - Track Title
 
 
     song5.mp3
     Track 5 - Track Title
 
 
     song6.mp3
     Track 6 - Track Title
 
 
     song7.mp3
     Track 7 - Track Title
 
 
     song8.mp3
     Track 8 - Track Title
 



1> Ivan Krechet..:

我使用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 = new SimpleXMLElement("<?xml version = \"1.0 \"encoding = \"utf-8 \"?> "); `
可以使用SimpleXml指定编码吗?怎么做?
@Eineki只需添加`<?xml version ="1.0"encoding ="WHATEVER_IT_IS"?>`处理指令.我相信,SimpleXMLElement将做正确的事情:将所有查询的字符串值转换为您的mb_internal_encoding.

2> Eineki..:

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

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

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

在第2行,我们创建一个空的xml文档(只需指定xml版本(1.0)和编码(utf8))

现在我们需要填充xml树:

我们必须创建一个xmlnode(第5行)

我们必须把它放在正确的位置.我们正在创建根,所以我们将它直接附加到domdocument.

注意create元素将元素追加到节点并返回插入的节点,我们保存此引用以将轨道节点追加到根节点(顺便称为xml).

这些是基础知识,您可以在一行中创建和附加一个节点(例如,第13个),您可以使用dom api执行许多其他操作.它是由你决定.

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

    $currentTrack = $domtree->createElement("track");
    $currentTrack = $xmlRoot->appendChild($currentTrack);

    /* you should enclose the following two lines in a cicle */
    $currentTrack->appendChild($domtree->createElement('path','song1.mp3'));
    $currentTrack->appendChild($domtree->createElement('title','title of song1.mp3'));

    $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文档one或simplexml one)而不是打印xml的主要优点是xmltree可以使用xpath查询进行搜索


我可以再次使用`$ domtree-> save('mypath/xmlfile.xml');`?
赞成不教新程序员懒惰!:)
@jjonesdesign你必须努力工作才能获得懒惰所需的知识:)

3> andyk..:

一个简单的方法是:

";

echo '';

// echo some dynamically generated content here
/*

    song_path
    track_number - track_title

*/

echo '';

?>

将其保存为.php


容易,但在内插变量时容易出错,其中包含XML元字符,如尖括号和&符号

4> Daniele Orla..:

使用FluidXML,您可以非常轻松地生成XML.

$tracks = fluidxml('xml');

$tracks->times(8, function ($i) {
    $this->add([
        'track' => [
            'path'  => "song{$i}.mp3",
            'title' => "Track {$i} - Track Title"
        ]
    ]);

});

https://github.com/servo-php/fluidxml


使用SimpleXML在本机PHP中轻松完成的外部库不是解决方案.
上一版本中的FluidXML支持**PHP 5**.
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有