Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Ricerca in XML

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    50

    Ricerca in XML

    Ho un documento xml:

    codice:
    <?xml version="1.0"?>
    <!DOCTYPE users SYSTEM "users.dtd">
    <users>
      <username id="pippo">
        <name>Mario</name>
        <password>27b4b5b01b0d1fcab2046369720ff75e</password>
        <role>poweruser</role>
      </username>
      <username id="pluto">
        <name>Mario</name>
        <password>27b4b5b01b0d1fcab2046369720ff75e</password>
        <role>amministratore</role>
      </username>
    </users>
    Devo consentire un'autenticazione verificando la coppia attributo di “username” e “password”.

    Riesco a verificare la presenza di un attributo id=”pippo” nel file con una getElementsByTagName() ma non riesco a verificare la corrispondenza della password all'interno dello stesso nodo.

    Potrei fare un'altra getElementsByTagName() ma dovrebbe essere limitata al solo nodo per cui lo username è stato validato.

    Devo utilizzare DOM e sulla documentazione ufficiale non sono riuscito a raccapezzarmi molto...


    qualcuno può consigliarmi come procedere?
    pensate sia necessario utilizzare qualcosa tipo xpath?


    grazie!

  2. #2

    Re: Ricerca in XML

    [supersaibal]Originariamente inviato da jann

    qualcuno può consigliarmi come procedere?
    pensate sia necessario utilizzare qualcosa tipo xpath?


    grazie! [/supersaibal]
    Ciao,
    sì molto meglio usare xpath
    http://www.phpday.it/2003/download.php
    per favore NIENTE PVT TECNICI da sconosciuti

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    50
    Ciao!
    Ho fatto così ma non sono ancora molto convinto

    codice:
    $doc   = new DomDocument;
    
    $doc->validateOnParse = true;
    $doc->Load('utenti.xml');
    
    $xp  = new domxpath($doc);
    $elm = $xp->query("/users/username[@id='pippo']/password");
    
    foreach ($elm as $node) {
      if ($node->textContent==$password) {
        echo "Autenticazione Riuscita 
    ";
      }
    }
    Infatti il mio secondo problema sarebbe quello di reperire tutti gli altri elementi del nodo "username".
    Dunque modifico la query e mi vengono riportati tutti i valori relativi agli elementi del nodo, tutto in una stringa.

    codice:
    $elm = $xp->query("/users/username[@id='pippo']");
    Risultato: Mario 27b4b5b01b0d1fcab2046369720ff75e poweruser


    A questo punto mi chiedevo se fosse possibile in qualche modo ottenere le coppie

    elemento-valore

    name,Mario password,27b4b5b01b0d1fcab2046369720ff75e role,poweruser

    anziché solo la lista di valori in una stringa.
    L'ordine in realtà lo conosco quindi posso ricostruire le associazioni sapendo che il primo valore è il nome, il secondo la password.... ma in questo modo sarebbe tutto più semplice


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