За последние 24 часа нас посетили 18377 программистов и 1637 роботов. Сейчас ищут 1677 программистов ...

Создание xml

Тема в разделе "Прочие вопросы по PHP", создана пользователем madgest, 8 янв 2012.

  1. madgest

    madgest Активный пользователь

    С нами с:
    22 янв 2011
    Сообщения:
    7
    Симпатии:
    0
    Написал класс для работы с xml. В нем присутствуют такие методы

    PHP:
    1. function MenuBuilder($id) {
    2.         $this->system_id = $id;
    3.         $this->xml = new DomDocument('1.0','utf-8');
    4. }
    5. function appendObject($title) {
    6.                return $this->object->appendChild($this->xml->createElement($title));
    7. }
    8. function  createMain($title) {
    9.     return $this->xml->appendChild($this->xml->createElement($title));
    10. }
    11. function setObject($item) {
    12.             $this->object = $item;
    13. }
    Пытаюсь работать с ним таким образом

    PHP:
    1. $prodNode = $xml_prod->createMain('product');
    2. $xml_prod->setObject($prodNode);
    3. $category = $xml_prod->appendObject('category');
    Задача ставится сделать универсальную функцию для создания дерева.

    Но при выполнении возникает ошибка

    Fatal error: Call to a member function appendChild() on a non-object

    Не могу понять как правильно передать объект для которого создается потомок.[/php]
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А ты уверен, что ошибка в этом коде?

    Я проверил код, создал xml сохранил используя твой код, ну правда слегка изменил, но изменения не значительны.

    Ошибок не было.
     
  3. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ошибка

    Fatal error: Call to a member function appendChild() on a non-object

    может быть если забыть вызвать ф-ю setObject(), т.е. если переменная $this->object будет не задана.
     
  4. madgest

    madgest Активный пользователь

    С нами с:
    22 янв 2011
    Сообщения:
    7
    Симпатии:
    0
    Всем спасибо! Действительно был мой косяк в вызове setObject() не тот node передавал. Вот как иногда полезно с кем то обсудить проблему что бы найти решение. А ведь на протяжении нескольких часов сидел и действительно не видел глупой ошибки.