日期:2014-05-16  浏览次数:20472 次

请问怎么在php里修改xml文件?

<?xml version='1.0' encoding='GB2312'?>
<imgList>
<pic>
<list path="images/01.jpg"   smallpath="images/01.png" smallinfo="黑客的局域网攻击">.html/article/hardware/008.html</list>
<list path="images/02.jpg"   smallpath="images/02.png" smallinfo="维护你的光驱">http://www.niutuku.com/</list>
<list path="images/03.jpg" smallpath="images/03.png" smallinfo="数字地球">http://www.niutuku.com/</list>
<list path="images/04.jpg" smallpath="images/04.png" smallinfo="网络改变生活">http://www.niutuku.com/</list>
</pic>
<rollTime fade_in="10">3</rollTime>
<text font="微软雅黑" size="14" bold="true" color="0xfffffff"></text>
</imgList>

上面是我要改的xml文件,要修改<pic>里的4个<list>的值和smallinfo属性,求大神帮帮忙。
------解决方案--------------------
这个主要涉及到xml DOM的操作吧,去看看这方面的内容吧。
------解决方案--------------------
用 xml DOM 
------解决方案--------------------
if ( file_exists ( 'out.xml' )) {
     $xml  = simplexml_load_file ( 'out.xml' );
 
     foreach ($xml->pic->list as $key => $value) {
       $attr = (array) $value->attributes ();
       var_dump($attr['@attributes']['smallinfo']);
      } 
} else {
    exit( 'Failed to open test.xml.' );
}
 这个只能取到里面的值 想改里面的值建议去下个simple_html_dom或者phpQuery
------解决方案--------------------
$s =<<< XML
<?xml version='1.0' encoding='GB2312'?>
<imgList>
<pic>
<list path="images/01.jpg"   smallpath="images/01.png" smallinfo="黑客的局域网攻击">.html/article/hardware/008.html</list>
<list path="images/02.jpg"   smallpath="images/02.png" smallinfo="维护你的光驱">http://www.niutuku.com/</list>
<list path="images/03.jpg" smallpath="images/03.png" smallinfo="数字地球">http://www.niutuku.com/</list>
<list path="images/04.jpg" smallpath="images/04.png" smallinfo="网络改变生活">http://www.niutuku.com/</list>
</pic>
<rollTime fade_in="10">3</rollTime>
<text font="微软雅黑" size="14" bold="true" color="0xfffffff"></text>
</imgList>
XML;
$xml = simplexml_load_string($s);
for($i=0; $i<count($xml->pic->list); $i++) {
  $xml->pic->list[$i] = $i;
  $t = $xml->pic->list[$i]->attributes();
  $t['smallpath'] = $i;
}
echo $xml->asXML();
<?xml version="1.0" encoding="GB2312"?>
<imgList>
<pic>
<list path="images/01.jpg" smallpath="0" smallinfo="黑客的局域网攻击">0</list>
<list path="images/02.jpg" smallpath="1" smallinfo="维护你的光驱">1</list>
<list path="images/03.jpg" smallpath="2" smallinfo="数字地球">2</list>
<list path="images/04.jpg" smallpath="3" smallinfo="网络改变生活">3</list>
</pic>
<rollTime fade_in="