﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Веб-программирование / PHP  / Динамическое изменение атрибутов в xml / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Wed, 03 Dec 2008 05:48:51 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Динамическое изменение атрибутов в xml</title><link>http://www.relib.com/forums/Topic912811-17-1.aspx</link><description>Ты пользуешься классом dom&lt;SPAN&gt;D&lt;/SPAN&gt;ocument. Изучай список его свойств и методов.</description><pubDate>Fri, 27 Apr 2007 09:51:45 GMT</pubDate><dc:creator>bazile</dc:creator></item><item><title>RE: Динамическое изменение атрибутов в xml</title><link>http://www.relib.com/forums/Topic912811-17-1.aspx</link><description>Это понял, спасибо.&lt;br&gt;А вот изменить атрибут так и не получается. &lt;br&gt;Я не стал писать DTD, добираюсь до нужной ноды так:&lt;br&gt;[code]$img = $document-&gt;getElementsByTagName("img");&lt;br&gt;for ($i=0; $i &lt; $img-&gt;length; $i++) {&lt;br&gt;   $ob = $img-&gt;item($i);&lt;br&gt;   $attr = $ob-&gt;attributes;&lt;br&gt;   if ($attr-&gt;getNamedItem("id")-&gt;nodeValue == $id) {&lt;br&gt;&lt;br&gt;      //тег img который мне нужен&lt;br&gt;&lt;br&gt;   }[/code]&lt;br&gt;&lt;br&gt;Насчёт метода replaceAttribute я погорячился, не помню откуда я его взял,  но похоже в PHP такого нет, во всяком случае поиск по php.net не дал результатов.&lt;br&gt;Так как же всё-таки изменить значение атрибута?&lt;br&gt;&lt;br&gt;Вообще замысел такой, по определённому действию пользователя значение атрибута изменяется на выбранное им, и это изменение должно быть&lt;br&gt;не только показано в браузере но и сохранено в xml-файле.&lt;br&gt;Сохранение, как я понимаю, реализуется через метод saveXML и перезапись файла строкой, которую возвращает этот метод. &lt;br&gt;Таким же образом можно будет менять url в ссылках и т.п.&lt;br&gt;&lt;br&gt;Но для начала нужно понять, как редактировать атрибуты.</description><pubDate>Thu, 26 Apr 2007 21:34:14 GMT</pubDate><dc:creator>sugee</dc:creator></item><item><title>RE: Динамическое изменение атрибутов в xml</title><link>http://www.relib.com/forums/Topic912811-17-1.aspx</link><description>sugee, я исправил твое сообщение так чтобы XML правильно отображался. На будущее имей в виду, если у тебя не отображаются теги, то замени вручную у них &amp;lt; на &amp;amp;lt;, &amp;gt; на &amp;amp;gt; и все будет в порядке.&lt;/P&gt;&lt;P&gt;Что касается сути вопроса, то надо понимать что id атрибут сам по себе для XML является таким же атрибутом как и все остальные. Чтобы XML начал воспринимать его его как уникальный id и, соответстветнно, могла работать функция getElementById, надо сделать DTD для документа или XML-схему где указать, что атрибут id тега &amp;lt;img&amp;gt; является уникальным идентификатором. Кроме того, значение id в xml не может начинаться с цифры.</description><pubDate>Thu, 26 Apr 2007 09:55:27 GMT</pubDate><dc:creator>bazile</dc:creator></item><item><title>Динамическое изменение атрибутов в xml</title><link>http://www.relib.com/forums/Topic912811-17-1.aspx</link><description>В xml-шаблоне, показанном ниже, мне нужно изменить по определённому действию пользователя атрибут src тега img. Так как у тега img есть id логично было бы добираться до него так&lt;/P&gt;&lt;P&gt;[code]$col = $document-&amp;gt;getElementById($id);[/code]&lt;/P&gt;&lt;P&gt;а потом применять replaceAttribute, но replaceAttribute вызывает ошибку&lt;/P&gt;&lt;P&gt;[code]Call to a member function replaceAttribute() on a non-object [/code]&lt;/P&gt;&lt;P&gt;Как это сделать правильно?&lt;/P&gt;&lt;P&gt;Вот шаблон&lt;/P&gt;&lt;P&gt;[code]&amp;lt;MENU&amp;gt;&lt;BR&gt;&amp;lt;TABLE cellSpacing=0 cellPadding=4 width="100%"&amp;gt;&lt;BR&gt;&amp;lt;TBODY&amp;gt;&lt;BR&gt;&amp;lt;TR height=50&amp;gt;&lt;BR&gt;&amp;lt;TD align=left width="20%" background=./backgrounds/ser14.gif&amp;gt;&amp;lt;A href=""&amp;gt;&amp;lt;IMG id=0 src="item1.gif" border=0&amp;gt;&amp;lt;/A&amp;gt;&amp;lt;/TD&amp;gt;&lt;BR&gt;&amp;lt;TD align=left width="20%" background=./backgrounds/ser14.gif&amp;gt;&amp;lt;A href=""&amp;gt;&amp;lt;IMG id=1 src="item2.gif" border=0&amp;gt;&amp;lt;/A&amp;gt;&amp;lt;/TD&amp;gt;&lt;BR&gt;&amp;lt;TD align=left width="20%" background=./backgrounds/ser14.gif&amp;gt;&amp;lt;A href=""&amp;gt;&amp;lt;IMG id=2 src="item3.gif" border=0&amp;gt;&amp;lt;/A&amp;gt;&amp;lt;/TD&amp;gt;&lt;BR&gt;&amp;lt;TD align=left width="20%" background=./backgrounds/ser14.gif&amp;gt;&amp;lt;A href=""&amp;gt;&amp;lt;IMG id=3 src="item4.gif" border=0&amp;gt;&amp;lt;/A&amp;gt;&amp;lt;/TD&amp;gt;&lt;BR&gt;&amp;lt;TD align=left width="20%" background=./backgrounds/ser14.gif&amp;gt;&amp;lt;A href=""&amp;gt;&amp;lt;IMG id=4 src="item5.gif" border=0&amp;gt;&amp;lt;/A&amp;gt;&amp;lt;/TD&amp;gt;&lt;BR&gt;&amp;lt;/TR&amp;gt;&lt;BR&gt;&amp;lt;/TBODY&amp;gt;&lt;BR&gt;&amp;lt;/TABLE&amp;gt;&lt;BR&gt;&amp;lt;/MENU&amp;gt;[/code]&lt;/P&gt;&lt;P&gt;Дерево xml-документа я получаю так&lt;BR&gt;[code]define('XMLHead', "&amp;lt;?xml version=\"1.0\" encoding=\"Windows-1251\" ?&amp;gt;");&lt;BR&gt;$document = new domDocument("Windows-1251");&lt;BR&gt;$menu = file_get_contents("../templates/top_menu.html"); //это тот самый xml&lt;BR&gt;$menu_doc = XMLHead.$menu;&lt;BR&gt;$document-&amp;gt;loadXML($menu_doc);[/code]&lt;/P&gt;&lt;P&gt;Прошу прощения, но запостить xml не смог :(</description><pubDate>Wed, 25 Apr 2007 19:59:20 GMT</pubDate><dc:creator>sugee</dc:creator></item></channel></rss>