PHP修改XML节点值不成功.大侠帮忙瞧瞧代码错在哪!

codelifes 2009-05-05 03:03:47
<?php
$xml = new DOMDocument();
$xml->load('playlist.xml');
foreach($xml->getElementsByTagName('title') as $list)
{
$value = $list->nodeValue;
if ($value == 'SONGA')
{
$value->nodeValue="123456789";
$xml->save( 'playlist.xml');
}
echo $value."<br />";
}
?>

以上PHP代码可以输出playlist.xml文件中的所有title节点,但上面尝试修改值为SONGA的title节点的值为123456789,不成功!
帮我瞧瞧错在哪!

以下是XML文件内容
<?xml version="1.0" encoding="utf-8"?>
<music autoPlay="true" autoNextSong="true">
<song>
<title>SONGA</title>
<mp3File>asgsdgs</mp3File>
</song>
<song>
<title>SONGB</title>
<mp3File>CINA</mp3File></song>
<song>
<title>SONGC</title>
<mp3File>CCC</mp3File>
</song>
</music>
...全文
277 点赞 收藏 5
写回复
5 条回复
xyq0125 2011年07月06日
谢谢啦。楼主
回复 点赞
cds27 2009年05月12日
还是楼上这位兄弟细心
回复 点赞
zhiyongtu 2009年05月12日
[Quote=引用楼主 codelifes 的帖子:]
foreach($xml->getElementsByTagName('title') as $list)
{
$value = $list->nodeValue;
if ($value == 'SONGA')
{
$value->nodeValue="123456789";
$xml->save( 'playlist.xml');
}
echo $value." <br />";
}
[/Quote]

我不懂PHP,但上面的代码看了还是明白其中的意思。我认为
$value->nodeValue="123456789";
应改为
$list->nodeValue="123456789";

另外,$xml->save( 'playlist.xml'); 应放在foreach循环之外,应是数据处理完了才存盘,不过这一点在这个问题当中不影响功能,是性能和程序逻辑问题。
回复 点赞
cds27 2009年05月11日
$value有没有取到SONGA?
回复 点赞
xiaojing7 2009年05月07日
不懂PHP
回复 点赞
发动态
发帖子
XML/XSL
创建于2007-09-28

7877

社区成员

2.2w+

社区内容

XML/XSL相关问题讨论专区
社区公告
暂无公告