Newsgroup: it.comp.www.php
Titolo: [Xpath:] il nodeset non lo accetta nel foreach

Ciao a tutti,
vorrei capire perchè l'interprete php 4.4.2 mi solleva l'eccezione al
foreach,:
<?php
	$real_path = realpath("./files/database/database.xml");
	if(!$domdb = domxml_open_file($real_path)){
	  die("Error while parsing the document");
	  }
	else {
		echo "<CENTER><H3>Member of Research Group</H3></CENTER>";
	}
	$Xpath = $domdb->xpath_new_context();
?>
<?php
	$query = "/WebSite/ResearchGroup/NameGroup/text()";
	$xpathOBJ = $Xpath->xpath_eval($query);
	$names = array();
	foreach ($xpathOBJ->nodeset as $it) {  <--- HERE!!!
	 $it->get_content();
}
	var_export($names);
?>
PHP:WARNING invalid arguments supplied for foreach.
Secondo voi il problema è il nodeset e che ci sia un legame con il
file xml??
Aspetto consigli.
Saluti

foreach ($xpathOBJ->nodeset as $it) {  <--- HERE!!!
Fai una
var_dump( $xpathOBJ->nodeset )
e prova a postare quello che esce fuori.
Ciao,
--
ff

dal debug esce:
array(3) { [0]=> object(domtext)(5) { ["type"]=> int(3) ["name"]=>
string(5) "#text" ["content"]=> string(7) " 10.50 " [0]=> int(3) [1]=>
int(9126832) } [1]=> object(domtext)(5) { ["type"]=> int(3) ["name"]=>
string(5) "#text" ["content"]=> string(7) " 13.00 " [0]=> int(4) [1]=>
int(9131600) } [2]=> object(domtext)(5) { ["type"]=> int(3) ["name"]=>
string(5) "#text" ["content"]=> string(7) " 16.00 " [0]=> int(5) [1]=>
int(9141904) } }
?????


scusami ho provato la funzione su unesempio che avevo trovato su un
sito web.
applicando la funzione sul mio test ottengo: "NULL"
Che significa?
grazie


applicando la funzione sul mio test ottengo: "NULL"
Ambč!
Stavo interpellando gli aruspici!
Se ottieni null vuol dire che la tua espressione xPath non ritorna nodi,
ergo la foreach da errore.
Verifica la tua espressione.
Ciao,
--
f 

 Ambè!


che č contenuto in WebSite che č contenuto nella root "/".
Prova a farti tornare la radice del documento e specializza via via 
l'espressione
xpath, cosě da verificare a che punto compi l'errore.
--
f 

 f

che significa??? tu sai spiegarmelo.
Significa che non trova niente.
Posta un pezzo del tuo XML che sia rappresentativo della struttura.
--
f 

ecco il un frammento xml:
<?xml version="1.0" encoding="UTF-8"?>
<WebSite
	xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance
"
	xmlns="
http://www.dia.uniroma3.it/~volpi/files/database
"
	xsi:schemaLocation="
http://www.dia.uniroma3.it/~volpi/files/database
	/afs/
vn.uniroma3.it/user/v/volpi/public/public_html/files/database/database.xsd
">
<ResearchGroup
picture="
http://www.dia.uniroma3.it/~compunet/images/compunet_banner.gif
">
	<NameGroup>Computer Networks Research Group</NameGroup>
	<Description>computer networks</Description>
	<Faculty>
www.dia.uniroma3.it
</Faculty>
	<Department>
www.web.dia.uniroma3.it
</Department>
	<University>
www.uniroma3.it
</University>
	<CurrentMember>238651</CurrentMember>
	<CurrentMember>238652</CurrentMember>
	<CurrentMember>000001</CurrentMember>
	<PastMember>238650</PastMember>
	<PastMember>000002</PastMember>
	<Project>netkit</Project>
	<Project>hermes</Project>
	<Coordinator>1</Coordinator>
	<!-- this publication reference technical-report-->
	<Publication>about netkit</Publication>
	<Publication>Visualization of the Autonomous Systems Interconnections
with HERMES</Publication>
	<!-- this publication reference article -->
	<Publication>IPv6-in-IPv4 tunnel discovery: methods and experimental
results</Publication>
	<Publication>bgplay</Publication>
	<!-- this publication refence Inproceeding -->
	<Publication>Algorithms for the Inference of the Commercial
Relationships between Autonomous Systems: Results Analysis and Model
Validation</Publication>
</ResearchGroup>
<ResearchGroup picture="
http://www.inf.uniroma3.it/research/GD.html
">
	<NameGroup>Graph Drawing</NameGroup>
	<Description>
	Algorithm Engineering Research Group
</Description>
	<Faculty>
http://www.dia.uniroma3.it/research/ACG.html
</Faculty>
	<Department>
http://www.web.dia.uniroma3.it/
</Department>
	<University>
http://www.uniroma3.it
</University>
	<CurrentMember>1</CurrentMember>
	<Project>netkit</Project>
</ResearchGroup>
<Project url="
http://www.netkit.org/
">
	<NameProject>netkit</NameProject>
	<Description>
	An open source system to emulate full-fledged networks on your PC,
    from switching to inter-domain routing.
    </Description>
	<FinancialContribute>-</FinancialContribute>
	<start_date>2000-10-01</start_date>
	<end_date>2005-07-23</end_date>
	<Grant>-</Grant>
	<ProjectPublication>
		<NamePublication>about netkit</NamePublication>
	</ProjectPublication>
	<ProjectPerson>
		<IDPerson>238651</IDPerson>
	</ProjectPerson>
	<ProjectPerson>
		<IDPerson>238652</IDPerson>
	</ProjectPerson>
	<ProjectPerson>
		<IDPerson>238650</IDPerson>
	</ProjectPerson>
</Project>
correggimi se sbaglio, se io voglio il nome dell gruppo di ricerca
nella query devo scrivere così:
<?php
	$real_path = realpath("./files/database/database.xml");
	if(!$domdb = domxml_open_file($real_path)){
	  die("Error while parsing the document");
	  }
	else {
		echo "<CENTER><H3>Xpath Test execute.</H3></CENTER>";
	}
	$xpath = $domdb->xpath_new_context();
?>
<?php
  $query = "/WebSite/ResearchGroup/NameGroup/text()";
  $xpath_nodeset = $xpath->xpath_eval($query);
  $names = array();
  foreach ($xpath_nodeset->nodeset as $iterator) {
   $names[] = $iterator->get_content();
}
  var_export($names);
?>
Fabio Fidanza ha scritto:


 ?>
...prova con le modifiche sopra (untested).
Ciao
-- 
Cybertoldo
Per rispondermi via email, sostituisci moc.liamg con 
gmail.com

 > nella query devo scrivere così:
