|
|
|
| Приветствую
подскажите, пожалуйста, как быть?
Ситуация:
Есть XML-файл, в котором у тегов несколько атрибутов
типа <item id="24" number="169" status_id="1" valid="true">.
Нужно сделать веб-интерфейс, чтоб выводились все item из XML-файла, а потом
при установке/сбросе галочки соответственно менялся status_id "1" или "2" и перезаписывался в соответствующий item в тот же XML-файл.
Вопрос: Никак не могу разобраться как перезаписать status_id? | |
|
|
|
|
|
|
|
для: enso
(25.07.2009 в 21:02)
| | Используйте регулярные выражения и замену в строке.
А здесь всегда можно проверить свой вариант, рекомендую http://gskinner.com/RegExr/ | |
|
|
|
|
|
|
|
для: aetern
(25.07.2009 в 21:39)
| | Спасибо, aetern!
Просто у меня бредовая идея была домом выкачивать весь xml и перестраивать по новой всё дерево при сохранении... вот я и подумал, что это больно "лихо"... мож какой ещё способ есть через всякие API в php для xml... | |
|
|
|
|
|
|
|
для: Enso
(25.07.2009 в 22:04)
| | Вы себе противоречите - как можно вывести все элементы не выкачивая весь файл? | |
|
|
|
|
|
|
|
для: enso
(25.07.2009 в 21:02)
| | а почему именно php? если редактируется выведенный в броузер файл, то лучше применить ява-скрипт и DOM( как вариант) | |
|
|
|
|
|
|
|
для: GeorgeIV
(25.07.2009 в 21:50)
| | А как потом его сохранить без php? Файлы то на хосте крутятся? | |
|
|
|
|
|
|
|
для: Enso
(25.07.2009 в 22:07)
| | У Вас редактирование в броузере, файлы на хосте. Естественно напрашивается аякс - редактируете в броузере и отправляете запрос на сервер, он сохраняет изменения в рабочем файле и подтверждает (или отвергает) изменения. Повторно уже скачивать весь файл нет смысла. | |
|
|
|
|
|
|
|
для: GeorgeIV
(25.07.2009 в 22:11)
| | Так вот в этом и вопрос, пускай аякс, я такой вариант не отвергаю... мне нужно узнать как обновить в файле пару строчек из многих? Можно ли стандартными способами как-то через API или только регулярными выражениями с прегреплейсами и т.п. В этом файле есть данные, которые вообще не будут изменяться... | |
|
|
|
|
|
|
|
для: Enso
(25.07.2009 в 23:49)
| | У каждого узла в XML есть что то уникальное, если совсем нет, тогда просто порядковый номер, параметр узла и новое его значение (или какой то признак, если удаляете) и отправляете это в запросе. У PHP на сервере много способов работы с XML, выбираете наиболее понятный и редактируете исходный XML | |
|
|
|
|
|
|
|
для: GeorgeIV
(25.07.2009 в 23:54)
| | Всё это я понимаю, спасибо )
Мне нужна помощь именно со способом, я никак не могу определиться с тем каким способом лучше осуществлять изменение атрибута?
Может кто-нить приведёт простейший пример кода.
Спасибо. | |
|
|
|
|
|
|
|
для: Enso
(26.07.2009 в 13:16)
| | у item какой нибудь из атрибутов уникален в предлах XML файла? | |
|
|
|
|
|
|
|
для: GeorgeIV
(26.07.2009 в 13:30)
| | <item id="24" number="169" status_id="1" valid="true"> | |
|
|
|
|
|
|
|
для: Enso
(26.07.2009 в 13:36)
| | Я тогда снова возвращаюсь к аякс запросу. Вы же умеете, я надеюсь, работать с XML ответом аякса. Распарсили, вывели в форму, обработчик форму отправляет запрос на сервер с указанием ID элемента, котрый редактируется. Сервер производит аналогичную операцию и переписывает контент XML файла. Какой момент неясен? | |
|
|
|
|
|
|
|
для: GeorgeIV
(26.07.2009 в 13:39)
| | Код, с помощью которого сервер непосредственно переписывает контент XML-файла после получения запроса от обработчика формы.
Приведите, пожалуйста, мини-пример, если можно. | |
|
|
|
|
|
|
|
для: Enso
(26.07.2009 в 14:16)
| | Мини-пример смогу только в понедельник.
Но вариантов как минимум два - разбираете файл, находите узел с пришедшим ID, корректируете аттрибуты узла, записываете обратно в файл.
Второй - спомощью str_replace поправить контент файла. | |
|
|
|
|
|
|
|
для: GeorgeIV
(26.07.2009 в 14:26)
| | Спасибо, GeorgeIV!
Было бы просто супер замечательно, если Вы в понедельник пример сможете продемонстрировать!
Наибольший интерес у меня к части "...корректируете аттрибуты узла, записываете обратно в файл..." | |
|
|
|
|
|
|
|
для: Enso
(26.07.2009 в 14:43)
| | Не стал писать, потому что все таки прав Трианон - XML - это транспортный файл и моя помощь сделает медвежью услугу. Ведь изначально Вы как то получили это файл (из базы, файла и т.п). Логичнее, внести в него изменения и перевывести файл. Если пользователь не имеет права что то менять в исходных данных, а может менять только связанный с ним параметры, то следует к запросу от клиента прицеплять какой то признак его и первыводить XML файл, заменяя в нужных местах общие данные на данные конкретного клиента. Редактировать XML, это все таки дурной тон программирования. | |
|
|
|
|
|
|
|
для: GeorgeIV
(27.07.2009 в 18:42)
| | Прекрасно! Всем спасибо! | |
|
|
|
|
|
|
|
для: Enso
(25.07.2009 в 23:49)
| | XML - не самый удобный формат хранения данных с целью модификации их по запросам...
Это скорее транспортный формат. | |
|
|
|
|
|
|
|
для: Trianon
(25.07.2009 в 23:55)
| | Безусловно, но в данном случае как раз xml является источником данных... и не хотелось усложнять процесс его редактирования включением дополнительных блоков программы... | |
|
|
|
|
|
|
|
для: Enso
(26.07.2009 в 13:20)
| | Вы так пишете, будто сейчас у Вас разработан и отлажен процесс редактирования этого XML.
И Вам этот процесс нежелательно усложнять.
Если оно и вправду так - тогда конечно.
Но тогда я не понимаю, в чем вопрос? | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2009 в 13:26)
| | Есть XML-файлы, в которых у тегов несколько атрибутов
типа <item id="24" number="169" status_id="1" valid="true">
Все эти данные забираются из xml флеш-картами, на которых нужно постоянно изменять информацию, соответственно нужно изменять параметры(атрибуты тегов) в xml... я не могу разобраться - можно ли как-то изменять(перезаписывать, например вместо '2' записать '1') конкретный атрибут конкретного тега с помощью API php для xml, без пересборки по новой всего дерева xml и т.п. или есть только слишком удобные методы через регулярные выражения, промежуточные базы и т.п. ? | |
|
|
|
|
|
|
|
для: Enso
(26.07.2009 в 13:35)
| | здесь нет ни слова про имеющийся процесс редактирования.
В принципе, можно при каждом изменении преобразовывать XML-файл в массив , менять отдельные его элементы, а потом формировать этот файл заново.
Но повторяю, на мой взгляд, лучше хранить данные в БД, а XML формировать либо на лету - при запросе, либо после модификации данных, упреждая запрос. | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2009 в 13:38)
| | Спасибо, Trianon.
Ваша позиция ясна.
P.S.: Конечно, нет ни слова про процесс редактирования, т.к. я как раз и хочу спросить наиболее оптимальный вариант реализации данного процесса... это я просто ситуацию описал, чтоб понятнее были обстоятельства... | |
|
|
|
|
|
|
|
для: Enso
(26.07.2009 в 14:17)
| | А XML Вам приходит со стороны или формируется на Вашем сервере? | |
|
|
|
|
|
|
|
для: GeorgeIV
(26.07.2009 в 14:30)
| | Изначальный xml-файл я сам создаю, но его структура диктуется разработчиком флешек, для которых эти данные и предназначены. Мне нужно приложение написать, чтоб в код xml напрямую никто не лазил. А единственная проблема это подобрать наиболее оптимальный вариант изменения исходного xml-файла программно. | |
|
|
|
|
|
|
|
для: Enso
(26.07.2009 в 14:48)
| | Имя этого файла Вы менять ни при каких обстоятельствах не можете? | |
|
|
|
|
|
|
|
для: Trianon
(26.07.2009 в 14:52)
| | лучше не менять | |
|
|
|
|
|
|
|
для: Enso
(26.07.2009 в 19:02)
| | умыл руки. | |
|
|
|