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

    Problemi con PHP5 DOM, XML, nodi CDATA

    Ciao a tutti, è un fracco di tempo che non scrivo più qui su php.

    Mi servirebbe sapere come mai (in php5 DOM) se faccio un cloneNode di un Elemento che ha figli CDATA, quando vado a settare il rispettivo nodeValue, se vado a vedere nel file xml, ho perso da definizione CDATA di quei nodi.

    Inoltre, esiste un costruttore per nodi DOMCharacterData? altrimenti come faccio a generarlo? o posso scriverci solo se è già creato?

    grazie in anticipo.

    ciao,
    jack.

  2. #2
    Vado a naso prova con createCDATASection



    PS
    Se posti un esempio è meglio
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Uhm... sì se uso quello posso creare CDATA, ma vorrei che la tipologia di nodo (cdata) non si perdesse se vado a chiedere il nodeType su un clone. Come mai invece me lo identifica come Element?

    uhm... forse il cdata section è a sua volta un nodo figlio dentro i tag? quindi lo vedo se faccio firstChild, prima?

    esempio:
    Codice PHP:
    #modello astratto
    <parent>
     <
    child1></child1>
     <
    child2><[CDATA]></child2>
    </
    parent>

    #lo clono così non devo rifarlo, ma solo riempire i vari campi
    newparent cloneNode(parenttrue-anche i nodi figli)

    echo 
    newparent->childNodes->item(1=child2)->nodeType
    #MI DICE Element, non Cdata Section! Come mai? forse devo fare ancora firstChild? 

  4. #4
    Con il codice che hai postato
    ci si può fare molto poco !

    cloneNode() è un metodo !

    e i CDATA non sono a norma
    (ma può darsi che c'entri il BBcode)



    PS.

    Sarà che son pigro ma vuoi mettere fare
    un copia e incolla ...............
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Un copia-incolla è improponibile, è un casino, non capiresti nulla.

    In pratica sto facendo un layer per database dentro un file xml.
    Ci sono dei campi che potrebbero contenere dei caratteri come " < > e che non voglio convertire. In futuro ci saranno veri e propri tag xml che però dovrò processare dopo, visto che nei database normali posso memorizzarli senza problemi, per cui il CDATA è la soluzione migliore.

    Il file xml è standalone non deve essere validato o altro. L'importante è che il file non risulti corrotto alla lettura tramite le funzioni DOM.

    cmq, com'è che se clono un tag con un CDATA dentro non mi rimane il cdata? o sono io che sbaglio a sovrascriverlo?

  6. #6
    test.xml
    Codice PHP:
    <?xml version="1.0" encoding="UTF-8"?>
    <parent> 
    <child1>jjjjjjjjjjjjjj</child1> 
    <child2><![CDATA[If your text contains a lot of "<" or "&" characters - as program code often does - the XML element can be defined as a CDATA section.]]></child2> 
    </parent>
    homework
    Codice PHP:
    <?php 
    $file 
    'test.xml';

    $dom = new DOMDocument('1.0''UTF-8');
    $dom->load($file);
    $child2 $dom->getElementsByTagName("child2");

    $cloneChild2$child2->item(0)->cloneNode(true);

    echo 
    $cloneChild2->firstChild->nodeType//4

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

  7. #7
    ah, ecco! il cdata è visto come un nodo figlio... ha senso!

    grazie mille!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.