Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: SimpleXML: Fatal error

  1. #1

    SimpleXML: Fatal error

    Ciao a tutti,
    ho il seguente file xml:

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <playlist version="1" xmlns="http://xspf.org/ns/0/">
        <title>Titolo Playlist</title>
        <image>dewplayer/covers/0.jpg</image>
    
        <trackList>
    
            <track>
              <location>dewplayer/mp3/Mammuth - Main Theme.mp3</location>
              <creator>Rossi Bruno</creator>
    	      <title>Mammuth</title>
              <image>dewplayer/covers/1.jpg</image>
            </track>
    
        </trackList>
    </playlist>

    E sto usando il seguente codice PHP per inserire le track, ovvero un elemento <track> con tutto il resto degli attributi: location, creator, title, bla bla bla...

    codice:
    if (file_exists(Yii::getPathOfAlias('webroot').'/playlist.xml')) {
    					$xml = simplexml_load_file(Yii::getPathOfAlias('webroot').'/playlist.xml');
    					
    					$track = $xml->tracklist[0]->addChild('track');
    					$track->addAttribute('id',$model->id);
    					$track->addChild('location',$model->track);
    					$track->addChild('creator',$model->autore);
    					$track->addChild('title',$model->titolo);
    					$track->addChild('image');
    					}//if
    L'unica cosa che ottengo è il seguente errore: Fatal error: Call to a member function addChild() on a non-object in C:\xampp\htdocs\fabriziocastania\protected\control lers\ItemController.php on line 93

    dove la linea 93 è quella che contiene la riga:
    codice:
    $track = $xml->tracklist[0]->addChild('track');
    Perché? Come posso risolvere??

    Grazieee!!

    P.S. uso Yii framework ma è ininfluente se non per il path del file che comunque sono sicuro essere corretto.

  2. #2
    Sto provando e riprovando ma non riesco a venirne fuori.
    Sembra quasi che ignori il file.

  3. #3
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,025
    Scusa quello che hai inserito:
    codice:
    ding="UTF-8"?>
    
        
        dewplayer/covers/0.jpg
    
        
    
            
              dewplayer/mp3/Mammuth - Main Theme.mp3
              Rossi Bruno
    	      
              dewplayer/covers/1.jpg
    A me non sembra un file xml.

  4. #4
    Forse i tag [CODE] non funzionano bene.
    Lo reincollo così senza tag:

    <?xml version="1.0" encoding="UTF-8"?>
    <playlist version="1" xmlns="http://xspf.org/ns/0/">
    <title>Titolo Playlist</title>
    <image>dewplayer/covers/0.jpg</image>

    <trackList>

    <track>
    <location>dewplayer/mp3/Mammuth - Main Theme.mp3</location>
    <creator>Rossi Bruno</creator>
    <title>Mammuth</title>
    <image>dewplayer/covers/1.jpg</image>
    </track>

    </trackList>
    </playlist>

  5. #5
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,025
    Io ho provato così direttamente con dei valori è funziona, magari bisogna dargli un'indentatura giusta al file xml che viene generato:
    $xml = simplexml_load_file('../xml/playlist.xml');

    $track = $xml->trackList[0]->addChild("track");

    $track->addAttribute("id","small");

    $track->addChild("location","2006-10-13");

    $track->addChild("creator","54");

    $track->addChild("title","df");

    $track->addChild("image","fddf");


    $f = fopen("../xml/playlist.xml", "w");
    fwrite($f, $xml->asXML());
    fclose($f);

    P.S.: Se fai dei progressi su questo codice rimandami questo esempio aggiornato, perchè vorrei capire di più anche io su questo linguaggio

  6. #6
    A parte per le ultime tre righe sulla gestione del file con fopen, il resto è identico e ovviamente mi rimane l'errore su "$track = $xml->tracklist[0]->addChild('track');"

  7. #7
    Ho sistemato in questo modo:
    codice:
    $xml = new SimpleXMLElement(Yii::getPathOfAlias('webroot').'/playlist.xml');
    
    					$track = $xml->tracklist[0]->addChild('track');
    					$track->addAttribute('id',$model->id);
    					$track->addChild('location',$model->track);
    					$track->addChild('creator',$model->autore);
    					$track->addChild('title',$model->titolo);
    					$track->addChild('image');
    					
    					$f = fopen(Yii::getPathOfAlias('webroot').'/playlist.xml','w');
    					fwrite($f, $xml->asXML());
    					fclose($f);
    e il "Fatal error" di prima, non appare più. Ora il problema è che mi viene dato il seguente errore:

    "SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 1: parser error : Start tag expected, '&lt;' not found "

    L'unica cosa che ho trovato è usare la funzione "html_entity_decode" ma provando a sostituire la prima riga con il seguente codice:

    codice:
    $xml = new SimpleXMLElement(html_entity_decode(Yii::getPathOfAlias('webroot').'/playlist.xml',ENT_QUOTES, 'utf-8'));
    il problema non si risolve

  8. #8
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,025
    Se hai notato nella riga:
    codice:
    $track = $xml->tracklist[0]->addChild('track');
    Il "tracklist" sul file xml è scritto "trackList" cioè con la "L" maiuscola.
    Non so se sia questo il problema prova a riprendere tutto da capo e scrivere meglio il codice.

  9. #9
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,025
    Scusa trez, la seguente linea di codice che sta nella condizione if, mi potresti spiegare in che modo la devo utilizzare? Devo attivare qualcosa nel web server di Apache?
    Dato che io sto lavorando in localhost devo dare un percorso diverso?
    codice:
    file_exists(Yii::getPathOfAlias('webroot').'/playlist.xml')
    Grazie.

  10. #10
    Ironmax,
    non so cosa dire per questa cosa che mi è sfuggita....accetto suggerimenti
    Grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.