用php更改xml属性

时间:2012-02-27 00:29:22

标签: php xml datetime

我试图创建一个每天都会添加歌曲的mp3播放器。经过长时间网上搜索数月之后。最后提出了一个选项,一个带有xml文件的flash播放器,该文件由确定日期的PHP代码控制。因为这是我在PHP中完成的第一个项目,我完全迷失了。

这是我下载的flash播放器的xml

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <param name="mp3" value="tracks/2.mp3|tracks/1.mp3" />
    <param name="title" value="Day 2|Day 1" />
    <param name="height" value="150" />
    <param name="width" value="250" />
    .........

前两个孩子的“”属性应该每天更改。

这是我提出的PHP代码无法正常工作

$data = simplexml_load_file('tracks/list.xml');
$xml = new SimpleXMLElement($data);

foreach($xml->param[0]->attributes() as $name => $value)
foreach($xml->param[1]->attributes() as $name2 => $value2)

$today=date(d);
if($today==01){
    $value.setAttribute("tracks/1.mp3");
    $value2.setAttribute("Day 1");
    echo $xml->saveXML();
}
if($today==02){
    $value.setAttribute("tracks/2.mp3|tracks/1.mp3");
    $value2.setAttribute("Day 2|Day 1");
    echo $xml->saveXML();
}
if($today==03){
    $value.setAttribute("tracks/3.mp3|tracks/2.mp3|tracks/1.mp3");
    $value2.setAttribute("Day 3|Day 2|Day 1");
    echo $xml->saveXML();
}
.........

请帮我解决这个问题。 感谢

2 个答案:

答案 0 :(得分:0)

这是不正确的。你需要SimpleXml,Dom Xml或者像smthng一样。保存xml后,使用xpath查找节点和set属性。考试:http://php.net/manual/en/book.simplexml.phphttp://php.net/manual/ru/domelement.setattribute.php

答案 1 :(得分:0)

您可以使用XQuery来完成这项工作:

let $config := 
<config>
    <param name="mp3" value="tracks/2.mp3|tracks/1.mp3" />
    <param name="title" value="Day 2|Day 1" />
</config>
let $today := day-from-date(current-date())
return
    switch(1)
    case 1 return {
        replace value of node $config/param[1]/@value with "tracks/1.mp3";
        replace value of node $config/param[2]/@value with "Day 1";
        $config
    }
    default return ()

您可以在http://www.zorba-xquery.com/html/demo#bYJOffXahl2PVhczDk+EgmZ1bAI=现场试试以下示例 有关如何安装XQuery PHP扩展的说明,请访问http://www.zorba-xquery.com/html/entry/2011/12/27/PHP_Meets_XQuery