Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Php-xml-based Blog System.

    Uelà tutto bene e la famiglia.

    Il mio primo esperimento con le DOM Functions.


    Ho utilizzato il core di un tutorial di Alejandro Gervasio (IL MITICO)
    sostituendone il motore da mysql a DOM-XML ..................


    Lo script è + che altro un'esperimento per esplorare le nuove funzionalità
    delle DOM Functions inserisce delete e update gli articoli di un ipotetico Blog.

    Il casino + grosso che ho incontrato è stato l'update.
    Meno male che su php.net il metodo replaceChild era ben documentato.



    Che dire se ne avete voglia dateci un occhio

    qui


    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  2. #2

    ...............

    Vediamo se un po di codice vi stuzzica:
    Codice PHP:
    <?php
    class XmlLoader {
        public 
    $doc null;
        public function 
    __construct() {
              
    $this->doc = new DOMDocument();
        }
        public function 
    loadXmlFile($fileName) {
            if(!
    is_file($fileName)){
                throw new 
    Exception('Invalid file name ['.$fileName.']');
            }
            if(!
    $this->doc->load($fileName)) {
                throw new 
    Exception('Error loading file ['.$fileName.']');
            }
            return new 
    XmlParser($this->doc);
        }
    }
    class 
    XmlParser
    {
        public 
    $doc null;
        private 
    $_item '';
        public function 
    __construct($doc) {
              
    $this->doc $doc;
            
    $this->_item 'item';
        }
        public function 
    addElement($xmlBody) {
             
    $item $this->doc->createElement($this->_item);
            foreach(
    $xmlBody as $key => $value) {
                
    $nodespace $this->doc->createElement($key);
                
    $nodetext $this->doc->createTextNode($value);
                
    $nodespace->appendChild($nodetext);
                
    $item->appendChild($nodespace);
            }
            
    $this->doc->documentElement->appendChild($item);
        }
        public function 
    getUpdatedValue($itemNum)
        {
            
    $values=array();
            
    $item $this->doc->getElementsByTagName("item");
            if(
    is_null($selected=$item->item((int)$itemNum))) {
                throw new 
    Exception('Error removing item ['.$itemNum.']');
            }
            foreach (
    $selected->childNodes as $elements) {
                  if (
    $elements->nodeType == ) {
                    if(
    $elements->firstChild->nodeType == 3) {
                        
    $values[] = $elements->firstChild->data;
                    }
                    }
            }
            return 
    $values;

        }
        public function 
    removeChild($itemNum)
        {
            
    $item $this->doc->getElementsByTagName("item");
            if(
    is_null($item->item((int)$itemNum))) {
                throw new 
    Exception('Error removing item ['.$itemNum.']');
            }
            
    $this->doc->documentElement->removeChild($item->item((int)$itemNum));
        }
        public function 
    replaceChild($xmlBody,$itemNum)
        {
            
    $item $this->doc->createElement($this->_item);
            foreach(
    $xmlBody as $key => $value) {
                
    $nodespace $this->doc->createElement($key);
                
    $nodetext $this->doc->createTextNode($value);
                
    $nodespace->appendChild($nodetext);
                
    $item->appendChild($nodespace);
            }
            
    $root $this->doc->documentElement;
            
    $selected $root->getElementsByTagName("item");
            if(
    is_null($selected->item((int)$itemNum))) {
                throw new 
    Exception('Error replacing item ['.$itemNum.']');
            }
            
    $oldnode $selected->item((int)$itemNum);
            
    $newnode $this->doc->importNode($itemtrue);
            
    $oldnode->parentNode->replaceChild($newnode$oldnode);
        }
        public function 
    save($fileName) {
            if(!
    $this->doc->save($fileName)){
                 throw new 
    Exception('Error saving file ['.$fileName.']');
            }
        }
        public function 
    getItemElements()
        {
            
    $item=array();
            foreach (
    $this->doc->documentElement->childNodes as $elements) {
                  if (
    $elements->nodeType == ) {
                    
    $item[] = $elements;
                }
            }
            return 
    $item;
        }
        public function 
    getNodesValue($item)
        {
            
    $values=array();
            foreach (
    $item->childNodes as $elements) {
                  if (
    $elements->nodeType == ) {
                    if(
    $elements->firstChild->nodeType == 3) {
                        
    $values[] = $elements->firstChild->data;
                    }
                    }
            }
            return 
    $values;
        }
    }
    //
    ?>
    E un esempio di xml file:
    Codice PHP:
    <items>
        <
    item>
            <
    time>
            </
    time>
            <
    title>
            </
    title>
            <
    author>
            </
    author>
            <
    content>
            </
    content>
        </
    item>;
    </
    items

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Questo approccio mi stuzzica molto, anche io ho messo su un intero sistema di blogging in PHP, la cosa che mi ha sempre disturbato è stata proprio dover inserire tutto il codice XHTML dinamico con dei brutti print() pieni di tag XHTML e variabili PHP.
    Se non ho capito male questo tuo approccio permetterebbe di creare una struttura XHTML in un file a parte e poi "popolarlo" dinamicamente attraverso chiamate a queste funzioni qui, giusto?
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  4. #4

    ..........

    Se non ho capito male questo tuo approccio permetterebbe di creare una struttura XHTML in un file a parte e poi "popolarlo" dinamicamente attraverso chiamate a queste funzioni qui, giusto?
    No, la classe serve per gestire un file xml trattato
    come un DB.

    Quello che dici tu è fatto nello script attraverso
    la classe BlogProcessor che in pratica oltre a tutto
    il resto gestisce una sorta di template tramite HEREDOC.


    Ritornando al tuo discorso sto cercando anch'io un sistema
    del genere cioè hai un file XHTML per poi popolarlo
    con dati da DB o XML per adesso l'unica soluzione è
    XSL (con PHP5 è previsto il supporto XSLT e SOAP ma
    non è ancora abilitato di default).
    La cosa è possibile tramite placeholder ma il tutto
    è scomodo da gestire.
    Dai un occhio qui per capire
    di cosa sto parlando.

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491

    Re: ..........

    Originariamente inviato da whisher
    No, la classe serve per gestire un file xml trattato
    come un DB.

    Quello che dici tu è fatto nello script attraverso
    la classe BlogProcessor che in pratica oltre a tutto
    il resto gestisce una sorta di template tramite HEREDOC.


    Ritornando al tuo discorso sto cercando anch'io un sistema
    del genere cioè hai un file XHTML per poi popolarlo
    con dati da DB o XML per adesso l'unica soluzione è
    XSL (con PHP5 è previsto il supporto XSLT e SOAP ma
    non è ancora abilitato di default).
    La cosa è possibile tramite placeholder ma il tutto
    è scomodo da gestire.
    Dai un occhio qui per capire
    di cosa sto parlando.

    Esattamente quello che piacerebbe fare anche a me...ora mi guardo il link che mi hai segnalato, fammi sapere se trovi altre info.
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

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.