使用PHP读写XML文件

时间:2010-10-03 19:05:55

标签: php xml

我有一个XML文件,videos.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<videos>
  <video url="videos/Lillebjorn.f4v" desc="Lillebjørn" />
  <video url="videos/Storebjorn.f4v" desc="Storebjørn" />
  <video url="videos/Pegasus.f4v" desc="Pegasus" />
</videos>

我想知道,如何阅读上面的文件,并添加一个新标签&lt; video url =“”desc =“”/&gt;使用PHP的新视频的URL和描述,然后覆盖当前的videos.xml文件,以便使用新标记进行更新。

3 个答案:

答案 0 :(得分:3)

使用PHP's DOM functions,您可以加载和操作它。

你也可以使用字符串函数手动修改它,DOM在这里可能是一种过度杀伤。

编辑:

假设您已将文件加载到$xml var:

$pos = strpos($xml, "</videos>");

if ($pos === false) {
    $xml = substr($xml,0,$pos)."\t<video url=\"$url\" desc=\"$desc\" />".substr($xml,$pos);
}

读取和写入只需检查

答案 1 :(得分:2)

我强烈反对将XML作为文本处理的做法。不要学习如何做错,从一开始就做好,正确的方法是使用DOM处理工具:

SimpleXMLElement - 顾名思义 - 它很简单,或者 DOMDocument - 但是对于这个任务,SimpleXMLElement就足够了。

从$ videos = simplexml_load_file开始('videos.xml');您可以按照SimpleXMLElement文档中的说明修改视频对象,然后使用file_put_contents('videos.xml',$ videos-&gt; asXML())将其写回XML文件;

别担心,默认情况下,SimpleXMLElement在每个PHP中。

答案 2 :(得分:2)

在FreeBSD 8 *上使用PHP5时,默认情况下不包含SimpleXML(无论如何都通过端口安装)。 以root身份发出以下命令以安装它。 找出它是否已安装的一种确定方法是在其中创建一个包含 phpinfo()的脚本,并在浏览器中搜索 simplexml

cd /usr/ports/textproc/php5-simplexml 
make install clean

之后可能还需要重启apache。

希望这可以避免某人秃顶。 ; - )