Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,072

    Problema a leggere un file xml con php

    Ciao a tutti, ho un file xml formattato così:

    codice:
    <SMResponseValueOfBasicStatusQtLH6oUP xmlns:i="ppp" xmlns="aaa">
        <Value xmlns:d2p1="ccc">
            <d2p1:CurrentProgram>T:\pippo.jpg</d2p1:CurrentProgram>
            <d2p1:DataValid>true</d2p1:DataValid>
            <d2p1:MachineStatus>Emergency</d2p1:MachineStatus>
        </Value>
    </SMResponseValueOfBasicStatusQtLH6oUP>
    Il problema che i i nodi d2p1 NON li riconosce.

    Ho provato così:
    Codice PHP:
    $arr $xml->xpath("/SMResponseValueOfBasicStatusQtLH6oUP/Value/d2p1");
    foreach(
    $arr as $item)
    echo 
    $item[0]."<br/>!!!"
    Ma non stampa nemmeno i punti esclamativi!!!

    Ho provato con:
    codice HTML:
    var_dump($xml);
    e appunto mi restituisce:
    codice:
    object(SimpleXMLElement)#5 (1) {   ["Value"]=>   object(SimpleXMLElement)#2 (0) {   } }
    E come vedete non ci sono i dati che vorrei visualizzare.

    Grazie

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,624
    Ciao, la butto lì, prova con un carattere jolly:
    codice:
    "/SMResponseValueOfBasicStatusQtLH6oUP/Value/d2p1:*"
    vedi se va
    Hai già provato Forum HTML.it Toolset?
    uno script che ottimizza il layout e le funzionalità del Forum

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,072
    codice:
    Warning:  SimpleXMLElement::xpath(): Undefined namespace prefix in /var/www/html/ppp/fff/dati.php on line 32
    Warning:  SimpleXMLElement::xpath(): xmlXPathEval: evaluation failed in /var/www/html/ppp/fff/dati.php on line 32
    Warning:  Invalid argument supplied for foreach() in /var/www/html/ppp/fff/dati.php on line 34
    Riga 32
    codice:
    $arr = $xml->xpath("/SMResponseValueOfBasicStatusQtLH6oUP/Value/d2p1:*");
    Riga 34
    codice:
    foreach($arr as $item)
    Avevo provato anche 'd2p1:CurrentProgram' e avevo lo stesso identico errore che con 'd2p1:*'

    Ho provato ad importarlo su excell ed effettivamente vedo una riga e tre colonne non so se può essere un aiuto
    Grazie

  4. #4
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,072
    Aggiungo che ho provato a sostituire i : sia con - che con _ che con .
    E in questo caso NON da errore, ma non visualizza nulla.
    Ultima modifica di Sonikag; 17-11-2023 a 19:18

  5. #5
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,072
    Ho provato con i namespace.
    <?php
    $xml = <<<EOD
    <book xmlns:chap="http://example.org/chapter-title">
    <title>My Book</title>
    <chapter id="1">
    <chap:title>Chapter 1</chap:title>
    <para>Donec velit. Nullam eget tellus vitae tortor gravida scelerisque.
    In orci lorem, cursus imperdiet, ultricies non, hendrerit et, orci.
    Nulla facilisi. Nullam velit nisl, laoreet id, condimentum ut,
    ultricies id, mauris.</para>
    </chapter>
    <chapter id="2">
    <chap:title>Chapter 2</chap:title>
    <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin
    gravida. Phasellus tincidunt massa vel urna. Proin adipiscing quam
    vitae odio. Sed dictum. Ut tincidunt lorem ac lorem. Duis eros
    tellus, pharetra id, faucibus eu, dapibus dictum, odio.</para>
    </chapter>
    </book>
    EOD;
    // $xml = new SimpleXMLElement("../file40/basicstatus.xml",null,true);
    $sxe = new SimpleXMLElement($xml);

    $sxe->registerXPathNamespace('c', 'http://example.org/chapter-title');
    $result = $sxe->xpath('//c:title');

    foreach ($result as $title) {
    echo $title . "\n";
    }
    ?>
    Questo esempio funziona perfettamente e restituisce
    Chapter 1 Chapter 2
    Ho quindi sostituito con i miei dati in questo modo:
    codice:
    $sxe = new SimpleXMLElement("../file40/basicstatus.xml",null,true);
    $sxe->registerXPathNamespace('i', 'ppp');
    $result = $sxe->xpath('//i:DataValid');
    
    echo "inizio<pre>";
    foreach ($result as $title) {
      echo $title . "!<br>";
    }
    echo "</pre>fine";
    Non ho errori, ma no esce nessun dato!

  6. #6
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,072
    Soluzione
    codice:
    $xml1 = simplexml_load_file($file1);
    $xml1->registerXPathNamespace("msg", "ppp");
    $vai ='no';
    $result = $xml1->xpath("//msg:DataValid");
    foreach ($result as $message)
      {
      if ($message == 'true') $vai='si';
      }
    
    if ($vai=='si'){  
      
    $result = $xml1->xpath("//msg:CurrentProgram");
    foreach ($result as $message)
      {
      echo "<p><b>Current program</b>: ".$message."</p>";
      }

Tag per questa discussione

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