Перейду сразу к делу. Есть задача - дополнить xml файл данными из массива.
Имеем такой хмл:
<DATATYPES>
<DATATYPE name="article" caption="Статья">
<FIELD name="title" caption="Заголовок" type="string"/>
<FIELD name="content" caption="Содержимое" type="text"/>
<FIELD name="pubdate" caption="Дата публикации" type="datetime" format="d.m.Y"/>
</DATATYPE>
<DATATYPE name="news" caption="Новость">
<FIELD name="title" caption="Заголовок" type="string"/>
<FIELD name="content" caption="Содержимое" type="text"/>
<FIELD name="pubdate" caption="Дата публикации" type="datetime" format="d.m.Y"/>
<FIELD name="viewcounter" caption="Количество просмотров" type="numeric"/>
<FIELD name="image1" caption="Изображение" type="image"/>
</DATATYPE>
<DATATYPE name="gallery" caption="Изображение">
<FIELD name="title" caption="Заголовок" type="string"/>
<FIELD name="descr" caption="Описание" type="text"/>
<FIELD name="image1" caption="Изображение" type="image"/>
</DATATYPE>
</DATATYPES>
Далее, загружаем его как объект simplexml и пытаемся для начала получить какое либо значение аттрибута:
$datatypes = simplexml_load_file('data.xml', 'SimpleXMLElement', LIBXML_NOCDATA);
echo $datatypes->datatype[0]['caption'];
и ничего у нас не получается.
Хорошо, попробуем вытащить узел как хмл:
$xml = $datatypes->datatype[0]->asXML();
в ответ - ошибка:
Call to a member function asXML() on a non-object in.....
Перепробовал и так и сяк, ничего не выходит, несмотря на то, что я делаю все как в книге, и многочисленных мануалах...
Кто работал с simplexml может подскажет в чем я не прав ?
Спустя 6 часов, 8 минут, 49 секунд (11.03.2011 - 15:14) Trianon написал(а):
Код:
Отклик:
$datatypes = simplexml_load_file('data.xml', 'SimpleXMLElement', LIBXML_NOCDATA);
echo ($datatypes->DATATYPE[0]["caption"]);
echo "<br/><pre>" .
htmlspecialchars($datatypes->DATATYPE[0]->asXML());
Отклик:
Статья
<DATATYPE name="article" caption="Статья">
<FIELD name="title" caption="Заголовок" type="string"/>
<FIELD name="content" caption="Содержимое" type="text"/>
<FIELD name="pubdate" caption="Дата публикации" type="datetime" format="d.m.Y"/>
</DATATYPE>