У меня есть 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>
Мне было интересно, как я могу прочитать файл выше и добавить новый тег <video url = "" desc = "" /> с URL-адресом нового видео и его описанием с помощью PHP, а затем перезаписать текущие videos.xml
чтобы он обновлялся с помощью нового тега.
Используя функции DOM PHP, вы можете загружать и манипулировать им.
Кроме того, вы можете изменить его вручную, используя строковые функции, DOM, вероятно, является излишним.
РЕДАКТИРОВАТЬ:
Предполагая, что вы загрузили файл в $xml
var:
$pos = strpos($xml, "</videos>"); if ($pos === false) { $xml = substr($xml,0,$pos)."\t<video url=\"$url\" desc=\"$desc\" />".substr($xml,$pos); }
Чтобы прочитать и написать только чек
Я категорически не согласен с практикой обработки XML как текста. Не узнайте, как это сделать неправильно, сделайте это с самого начала, и правильный способ сделать это – использовать инструменты обработки DOM:
SimpleXMLElement – как сказано в названии – это просто или DOMDocument, но для этой задачи SimpleXMLElement будет более чем достаточно.
Начать с $ videos = simplexml_load_file ('videos.xml'); Вы можете изменить видеообъект, как описано в документации SimpleXMLElement , а затем записать его обратно в файл XML с помощью file_put_contents ('videos.xml', $ videos-> asXML ());
Не волнуйтесь, SimpleXMLElement в каждом PHP по умолчанию.
SimpleXML не включается по умолчанию при использовании PHP5 на FreeBSD 8. * (при установке через порты в любом случае). Выполните команды ниже как root, чтобы установить их. Один верный способ узнать, установлен ли он, – создать в нем скрипт с phpinfo () и выполнить поиск в вашем браузере для simplexml .
cd /usr/ports/textproc/php5-simplexml make install clean
Вероятно, необходимо также перезапустить apache.
Надеюсь, это спасет кого-то от лысых. 😉