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

Discussione: getElementsByTagName

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    128

    getElementsByTagName

    Come faccio a capire se un tag XML non è presente nel testo con la
    getElementsByTagName?

    Codice PHP:
    $result $dom->getElementsByTagName("nome"); 
        
    $str $result->item(0)->textContent
    in questo caso potrei testare $str se è vuota ma nel caso in cui il tag fosse presente, ma non ci fosse alcun informazione,come per esempio:
    Codice PHP:
    <nome>gino</nome>
    <
    cognome>pino</cognome>
    <
    email></email
    lo tratterebbe nello stesso modo

  2. #2

    Re: getElementsByTagName

    Originariamente inviato da patrick82
    Come faccio a capire se un tag XML non è presente nel testo con la
    getElementsByTagName?

    Codice PHP:
    $result $dom->getElementsByTagName("nome"); 
        
    $str $result->item(0)->textContent
    in questo caso potrei testare $str se è vuota ma nel caso in cui il tag fosse presente, ma non ci fosse alcun informazione,come per esempio:
    Codice PHP:
    <nome>gino</nome>
    <
    cognome>pino</cognome>
    <
    email></email
    lo tratterebbe nello stesso modo
    Prova così:
    Codice PHP:
    $result $dom->getElementsByTagName("nome"); 
    if( 
    $result->length != ){
        
    $str $result->item(0)->textContent;

    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    128
    Credo che però il problema non si risolva. Come faccio a distinguere se il campo era vuoto oppure non esisteva? Per esempio, nome non restituirà lenght==0 mentre email si. Ora, se io faccio

    Codice PHP:
    $result $dom->getElementsByTagName("email");
    if( 
    $result->length != ){
        
    $str $result->item(0)->textContent;

    oppure
    Codice PHP:
    $result $dom->getElementsByTagName("indirizzo");
    if( 
    $result->length != ){
        
    $str $result->item(0)->textContent;

    il php mi tratta ugualmente i due casi

  4. #4
    Originariamente inviato da patrick82
    Credo che però il problema non si risolva. Come faccio a distinguere se il campo era vuoto oppure non esisteva? Per esempio, nome non restituirà lenght==0 mentre email si. Ora, se io faccio

    Codice PHP:
    $result $dom->getElementsByTagName("email");
    if( 
    $result->length != ){
        
    $str $result->item(0)->textContent;

    oppure
    Codice PHP:
    $result $dom->getElementsByTagName("indirizzo");
    if( 
    $result->length != ){
        
    $str $result->item(0)->textContent;

    il php mi tratta ugualmente i due casi
    Allora se il tag <email> esiste getElementsByTagName ti restituisce una lista di nodi contente ogni elemento <email> che trova.
    Se non esiste la lista sarà vuota.

    Se vuoi vedere se il tag <email> ha del textContent o vedi se textContent è una stringa vuota oppure la soluzione più elegante è quella di usare una query XPath del tipo:

    //email/text()[string-length() != 0]

    Ad occhio dovrebbe funzionare.
    In pratica la query ti seleziona solo i tag <email> che hanno del textContent.

    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    128
    Ok funziona, grazie mille!!

  6. #6

    metodo get_content()

    Un metodo più ortodosso per leggere il contenuto dell'elemento sarebbe get_content() creato appositamente:
    Codice PHP:
    $result $dom[0]->get_elements_by_tagname('email');
    if (
    count($result)> 0) {
        
    $str $result[0]->get_content(); } 
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  7. #7

    Re: metodo get_content()

    Originariamente inviato da emanueledg
    Un metodo più ortodosso per leggere il contenuto dell'elemento sarebbe get_content() creato appositamente:
    Codice PHP:
    $result $dom[0]->get_elements_by_tagname('email');
    if (
    count($result)> 0) {
        
    $str $result[0]->get_content(); } 
    Così però sei fuori dallo standard DOM

  8. #8

    What does it depend on?

    VVoVe:
    Oho non sapevo...
    Ma sono fuori per if (count($result)> 0) invece di if ($result->length != 0)

    oppure per $str = $result[0]->get_content(); invece di $str = $result[0]->get_content();

    o per entrambi?
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    128

    Re: Re: metodo get_content()

    Originariamente inviato da Marcoski
    Così però sei fuori dallo standard DOM
    Dov'è che posso trovare dove viene spiegato lo standard DOM e il contenuto di tutti gli oggetti?
    Per esempio un manuale che mi dica che risultato della
    Codice PHP:
    $result $dom->getElementsByTagName("nome"); 
    mi restituisce un oggetto. che per prendere il valore testuale devo fare
    Codice PHP:
        $str $result->item(0)->textContent
    ecc...
    Mi sarebbe veramente d'aiuto!

  10. #10
    Per la conoscenza istantanea del tipo di una variabile hai la funzione gettype($variable) che ti dice quello su cui stai operando.
    Se ogni tanto nello script metti un controllo di flusso del tipo
    Codice PHP:
    echo "Tipo di \$result: ".gettype($result)."
    \n"

    sai sempre se è la variabile è una stringa, un numero intero, un decimale, un array, un valore booleano o un oggetto.

    Per quanto riguarda poi la webografia sull'argomento della programmazione ad oggetti, hai un buon inizio in un articolo di freephp
    http://php.html.it/articoli/leggi/86...tti-con-php-4/
    che potrebbe bastare per avere una panoramica (ma non ti fermare lì, cerca su google), e poi questo articolo
    http://php.html.it/articoli/leggi/914/la
    se usi una versione aggiornata di PHP5 o ti interessano gli upgrade apportati al linguaggio OOP (Object Oriented Programming) nell'ultima release.
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

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.