PDA

View Full Version : [XPATH] e [PHP] problema con query


nemo75
10-04-2008, 16:45
Ripropongo il problema dopo la chiusura del precedente thread, spero che questa volta vada bene :(

Salve a tutti,
ho bisogno di interrogare un file xml da una pagina web php.
premetto che sto imparando php ora e non ho mai utilizzato XPATH.

ho provato ad uploadare il file -> tutto ok
se lo apro in lettura con le funzioni php -> tutto ok (niente problemi di permessi)

se invece provo ad eseguire ricerche non ottengo nulla.
ho buttato via il mio file (file correttamente scritto in xml 2.0) ed ho utilizzato un file diesempio preso da http://www.w3schools.com/Xpath/xpath_examples.asp
file che riporto:

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book>
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>

</bookstore>


le operazioni che eseguo:

***********INIZIO CODICE**************************
$xml = simplexml_load_file("./public/bookstore.xml"); //esiste ed è accessibile

//verifico che il file si aperto;
//non so se questa operazione è corretta
if (!isset($xml)) echo "File non aperto";

//seleziono tutti gli elementi
$prova[] = $xml->xpath('//*');
//provato anche come segue:
//$prova[] = $xml->xpath('/bookstore/*');

echo "Il numero di elementi presenti nel file è:<BR>";

echo count ($prova)."<BR>";
echo $prova[0];

**************fine codice******************
l'output che ottengo è il seguente:

***********inizio output***************
Il numero di elementi presenti nel file è:
1
Array
***********fine output****************

dovrei trovare un numero di elementi maggiore e non mi spiego qull'"Array"!!!

ora:
non effettua proprio l'accesso al file?
oppure accede ma è sbagliata la query?

tnx

nemo75
11-04-2008, 14:52
...vedo che XPATH va tanto di moda! :)

cmq ho modificato i lcodice come segue:
*******************************************
$xml = file_get_contents("./public/".$nome_file,1);
$xmlData = new SimpleXMLElement($xml);

$prova = $xmlData->xpath('//Bookstore/book');

echo "Il numero di elementi presenti nel file è:<BR>";
echo count ($prova)."<BR>";
var_dump($prova);

*******************************************

l'output del programma mi fornisce sempre la stessa cosa:
1
array(0) { }

se invece modifico la query xpath scrivendo '//*'
mi restituisce il numero esatto di elementi presenti i ntutto il file e
un dump completo dell'array.
quindi il file viene aperto e letto correttamente...il problema dovrebbe essere nella mia query. ma i tutorial che trovo in giro mi dicono che la sintassi dovrebbe esser corretta :(:(:(:muro:

idee?
proposte?
:help: