Вызов функции-члена appendChild () для необъекта в - PullRequest
0 голосов
/ 07 марта 2012

что не так с этим кодом?

public function openXML()
{
    // Ouverture du fichier
    $file = new DOMDocument();
    $file->load("lastitems.xml"); 

    //On retourne le fichier
    return $file;
}

public function createXML()
{
    // Création du fichier en mémoire 
    $file = new DOMDocument("1.0");

    // Création du noeud racine
    $root = $file->createElement("rss"); //On crée l élément racine
    $root->setAttribute("version", "2.0"); //On lui ajoute l attribut version (2.0)
    $root = $file->appendChild($root); //On insère la racine dans le document

    // Création du noeud channel 
    $element_channel = $file->createElement("channel");//On crée un élément channel
    $element_channel->setAttribute("id", "lastitem"); //On donne un attribut id à notre channel
    $element_channel = $root->appendChild($element_channel);//On ajoute cet élément à la racine

    // Création du noeud description 
    $element_description = $file->createElement("description");//On crée un élément description
    $element_description = $element_channel->appendChild($element_description);//On ajoute cet élément au channel

    // Création du texte pour le noeud description 
    $texte_description = $file->createTextNode("LAST 10 ITEMS IN VSOOK"); //On crée un texte
    $texte_description = $element_description->appendChild($texte_description); //On insère ce texte dans le noeud description

    // Création du noeud link et ajout du texte à l élément 
    $element_link = $file->createElement("link");
    $element_link = $element_channel->appendChild($element_link);
    $texte_link = $file->createTextNode("http://www.mysite.com/");
    $texte_link = $element_link->appendChild($texte_link);

    // Création du noeud title et ajout du texte à l élément 
    $element_title = $file->createElement("title");
    $element_title = $element_channel->appendChild($element_title);
    $texte_title = $file->createTextNode("RSS ITEMS");
    $texte_title = $element_title->appendChild($texte_title);

    //On retourne le fichier XML
    return $file;
}

public function addOneNews($file, $title, $timestamp, $author)
{
    //On récupère le channel
    $element_channel = $file->getElementById("lastitem");

    // Création du noeud item
    $element_item = $file->createElement("item");
    $element_item = $element_channel->appendChild($element_item);

    // Création du noeud title et ajout du texte à l élément 
    $element_title = $file->createElement("title");
    $element_title = $element_item->appendChild($element_title);
    $texte_title = $file->createTextNode($title);
    $texte_title = $element_title->appendChild($texte_title);

    // Création du noeud link et ajout du texte à l élément 
    $element_link = $file->createElement("link");
    $element_link = $element_item->appendChild($element_link);
    $texte_link = $file->createTextNode("Lien vers la news");
    $texte_link = $element_link->appendChild($texte_link);

    // Création du noeud pubDate et ajout du texte à l élément 
    $element_date = $file->createElement("pubDate");
    $element_date = $element_item->appendChild($element_date);
    $texte_date = $file->createTextNode($date("d/m/Y H:i",$timestamp));
    $texte_date = $element_date->appendChild($texte_date);

    // Création du noeud author et ajout du texte à l élément 
    $element_author = $file->createElement("author");
    $element_author = $element_item->appendChild($element_author);
    $texte_author = $file->createTextNode($author);
    $texte_author = $element_author->appendChild($texte_author);
}
public function saveXML($file)
{
    //Sauvegarde du fichier
    $file->save("lastitems.xml");
}

при использовании я получаю эту ошибку:

Неустранимая ошибка: вызов функции-члена appendChild () для необъекта в C: \ wamp \ www \ mysite \ включает \ querys.php в строке 1604

строка 1604:

$ файл-> getElementById ( "lastitem");

Это просто простая функция для создания и генерации XML-файла RSS.

1 Ответ

1 голос
/ 07 марта 2012

Ну, не зная, каковы ваши номера строк, это действительно невозможно узнать наверняка, но я держу пари, что эта строка:

$file->getElementById("lastitem");

Вы уверены, что есть элемент с id="lastitem"?

Если вы не добавите комментарий и не сообщите нам фактический номер строки, я подозреваю, что вы не получите ничего лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...