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

    Rimuovere Dichiarazione XML

    Ciao a tutti!

    Ho un problema con simplexml_load_string.

    Devo caricare una stringa xml ben formattata, ma devo eliminare la dichiarazione <?xml version...?> perche' devo fare una concatenazione con altre stringhe xml anch'esse con dichiarazione xml (devo rimuoverle tutte). Ho provato str_replace e preg_replace ma non funzionano. Avete idee in merito?
    Grazie!

  2. #2
    dal sito della w3c ho trovato queste costanti da usare nella chiamata simpleXML
    LIBXML_NOXMLDECL Drop the XML declaration when saving a document
    LIBXML_NSCLEAN Remove excess namespace declarations


    ma quando le uso mi dice
    'Warning: simplexml_load_string() expects parameter 2 to be a class name derived from SimpleXMLElement, '2' given in /var/www/people/ltw1104/cgi-bin/Prova2.php on line 32'
    questo e' il mio codice
    Codice PHP:
    $temp simplexml_load_string($checkLIBXML_NOXMLDECL,LIBXML_NSCLEAN); 

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Usa lib DOMDocument io la preferisco anche se leggermente piu' macchinosa.

    1- crei il domdocument dal primo xml
    2- crei gli altri dom documents dagli altri xml

    3- identifichi i nodi da aggiungere e fai un doc->append($node)

    quindi ri-salvi l'xml e sei apposto.
    visto che possiamo usare il dom usiamolo

  4. #4
    ho trovato un metodo piu' brabino... usando str_replace bisogna togliere singolarmente i tag di apertura e chiusura <? e ?> poi posso togliere come una normale stringa la dichiarazione XML. Grazie cmq della dritta sul dom.

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Uhm si capisco, comunque secondo me ti conviene evitare di apsticciare l'xml con str_replace(io lo faccio solo come ultimissima risorsa).

    Come dicevo ti conviene caricare il dom appendere i nuovi nodi e ri-salvare ... cosi' hai delle procedure "sicure" .

  6. #6
    ma guarda, l'xml di cui parlo mi arriva sottoforma di stringa e devo concatenarlo con una query sul mio server e spedire tutto al client in una echo quindi non effettuo operazioni di sovrascrittura o salvataggio. Cmq si, ammetto che il metodo che ho usato non e' "ortodosso"

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    lol non e' che non e' ortodosso anzi e' un metodo comunemente usato

    l'importante e' che alla fine funzioni

  8. #8
    Utente di HTML.it L'avatar di _debo
    Registrato dal
    Mar 2012
    residenza
    London, UK
    Messaggi
    858
    Leggere attentamente la documentazione e seguire il consiglio di Virus_101 su "str_replace"

    Per ottenere quello che vuoi in modo corretto ed efficiente devi usare la funzione come segue:
    Codice PHP:
    $temp simplexml_load_string($check'SimpleXMLElement'LIBXML_NOXMLDECL); 
    Fai però attenzione che quella costante è disponibile solo in Libxml >= 2.6.21

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.