Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Problemi XPath

  1. #1

    Problemi XPath

    Ciao a tutti,
    ho un problema con Xpath... sono abb nuovo di questa tecnologia e faccio un po' di confusione...
    Io ho un documento xml fatto così:
    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <video_data>
      <video>
        <file>Parabeat-100.avi</file>
        <immagine>Shot-100.jpg</immagine>
        <routine>100 / Dave Rodgers</routine>
        <ballerini>
          <ballerino page="../staff/StaffMiro.php">
            <nick>Mirò</nick>
          </ballerino>
          <ballerino page="../staff/StaffFex.php">
            <nick>Fex</nick>
          </ballerino>
          <ballerino page="../staff/StaffJrLive.php">
            <nick>JrLive</nick>
          </ballerino>
        </ballerini>
        <location>Piazza Cadorna, Milano</location>
        <tipo_file>AVI DivX</tipo_file>
        <streaming_link>http://xxxxxxxxxxx</streaming_link>
      </video>
    .
    .
    .
    </video_data>
    all'interno di un file php devo estrarre tutti i dati di un "<video>" sapendo il nome del "<file>"
    se è più facile "file" potrebbe diventare l'attributo di video, non è un problema per me....

    per iniziare ho provato a fare dei test del genere:
    Codice PHP:
        $xpath = new DomXPath($dom); 
        
    $node $xpath->query("//video[@file=".$file."]")->item(0);
        echo  
    $node->getAttribute("file"); // ho provato anche echo $node; 
    però se già a questo punto non riesco ad ottenere quello che voglio ho esaurito le mie conoscenze ^^;;

    spero qualcuno possa aiutarmi
    grazie in anticipo =)
    Flash Developer for Rich Media
    PHP, jQuery Developer

  2. #2
    codice:
    <?xml version="1.0" encoding="utf-8"?>
    <video_data>
      <video>
        <file>Parabeat-100.avi</file>
        <immagine>Shot-100.jpg</immagine>
        <routine>100 / Dave Rodgers</routine>
        <ballerini>
          <ballerino page="../staff/StaffMiro.php">
            <nick>Mirò</nick>
          </ballerino>
          <ballerino page="../staff/StaffFex.php">
            <nick>Fex</nick>
          </ballerino>
          <ballerino page="../staff/StaffJrLive.php">
            <nick>JrLive</nick>
          </ballerino>
        </ballerini>
        <location>Piazza Cadorna, Milano</location>
        <tipo_file>AVI DivX</tipo_file>
        <streaming_link>http://xxxxxxxxxxx</streaming_link>
      </video>
    </video_data>
    codice:
    <?php
    
    $file = 'Parabeat-100.avi';
    $dom = DOMDocument::load('video.xml');
    
    $xpath = new DomXPath($dom);
    $results = $xpath->query('/video_data/video[file = "' . $file . '"]');
    
    foreach($results as $node) {
      echo $node->nodeValue;
    }
    Ci sono diversi modi di arrivare all'obiettivo.
    Questo è solo uno, non sapendo esattamente cosa volevi ottenere ho preso una delle tante soluzioni a caso.

  3. #3
    ugh... che errori stupidi che ho fatto...
    ho mancato di mettere la root e gli apici nel confronto


    grazie mille! =)

    Comunque... come mai mi mette tutti i valori dei figli in una variabile sola? se io volessi scorrerli una volta trovato il <video> giusto e usarli separatamente?
    E come faccio a estrapolare un attributo invece? (sempre con la condizione su "<video>")
    Flash Developer for Rich Media
    PHP, jQuery Developer

  4. #4
    Originariamente inviato da Miroku
    Comunque... come mai mi mette tutti i valori dei figli in una variabile sola? se io volessi scorrerli una volta trovato il <video> giusto e usarli separatamente?
    E come faccio a estrapolare un attributo invece? (sempre con la condizione su "<video>")
    Dipende da come usi l'oggetto $node.
    Consulta la documentazione per l'oggetto Node di PHP e troverai come accedere ai singoli nodi singolarmente.

  5. #5
    Alla fine ce l'ho fatta...
    usavo metodi di DOMXml al posto di DOM e basta ^^;

    grazie mille =)
    Flash Developer for Rich Media
    PHP, jQuery Developer

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.