|
|
|
| Всем привет.
Имется директория для загрузки изображений. Список с описанием изображений храниться в файле catalog.xml в той же папке. Вот его структура:
<?xml version="1.0" encoding="utf-8" ?>
<catalog count="N" view="yes">
<description>Основной каталог</description>
<image id="lwipgh" date="1261151756" view="yes" fname="image1.jpg">
<name>Заголовок изображения 1</name>
<description />
</image>
<image id="zhtpwe" date="1261151757" view="yes" fname="image2.jpg">
<name>Заголовок изображения 2</name>
<description />
</image>
...
</catalog>
|
Пытаюсь с помощью SimpleXML отредактировать файл, но не удается:
$xml = simplexml_load_file('catalog.xml');
// С помощью метода xpath нахожу необходимый узел
$image_by_id = $xml->xpath('//image[@id="'.$img_id.'"]');
// Редактирую
// Ф-я utf8encode() преобразует кодировку в UTF-8
$image_by_id->name = utf8encode($img_new_name);
// Сохраняю
$xml->asXML('catalog.xml');
|
Но в итоге ничего не изменяеться. Где тут может быть ошибка?
Возможно ли отредактировать узлы, выбранные с помощью xpath? | |
|
|
|
|
|
|
|
для: Adj
(20.12.2009 в 19:43)
| | 1. Функции utf8encode() в РНР нет.
2. Метод xpath() возвращает массив объектов. | |
|
|
|
|
|
|
|
для: Саня
(20.12.2009 в 20:14)
| | >1. Функции utf8encode() в РНР нет.
Это пользовательская ф-я, поэтому я ее прокомментровал.
>2. Метод xpath() возвращает массив объектов.
Если я правильно понял, полученный массив уже никак не связан с $xml и его редактирование не изменит исходный xml-файл? | |
|
|
|
|
|
|
|
для: Adj
(20.12.2009 в 21:08)
| | Изменит. Массив объектов же. Я бы даже сказал массив ссылок на объекты. | |
|
|
|
|
|
|
|
для: Саня
(20.12.2009 в 21:20)
| | А разве вот эта запись не меняет значение:
$image_by_id->name = utf8encode($img_new_name);
|
и вот эта не сохраняет полученный массив:
$xml->asXML('catalog.xml');
|
? | |
|
|
|
|
|
|
|
для: Adj
(20.12.2009 в 23:50)
| |
$image_by_id->name = utf8encode($img_new_name);
| Я не вижу тут обращение к элементу массива. И вообще, включите отображение ошибок. | |
|
|
|
|
|
|
|
для: Саня
(20.12.2009 в 23:53)
| | $image_by_id['name'] = utf8encode($img_new_name) так :)? | |
|
|
|
|
|
|
|
для: Adj
(20.12.2009 в 23:56)
| |
$image_by_id[0]->name = utf8encode($img_new_name);
|
Xpath находит все элементы по указанной маске и возвращает их в виде массива. У вас получился массив с одним элементом. | |
|
|
|
|
|
|
|
для: Саня
(20.12.2009 в 23:57)
| | Ну вот, теперь работает. Надо было еще немного пошевелить мозгами.
ОГРОМНОЕ Вам человеческое спасибо!!! | |
|
|
|
|
|
|
|
для: Adj
(20.12.2009 в 23:56)
| | . | |
|
|
|