Cesare Cesare - 1 year ago 65
HTML Question

Extract XPath for HTML code

I've this HTML code ....

.....
.....
.....
<div class="bloccoOspedale">
<div id="nomeOspedale">
<div class="datiOspedale">Pazienti in corso di visita: 2 di cui in O.B.I.: 0</div>
<div class="datiOspedaleCodici">
<div class="codBianco">Codice bianco:0</div>
<div class="codVerde">Codice verde:1</div>
<div class="codGiallo">Codice giallo:1</div>
<div class="codRosso">Codice rosso:0</div>
</div>
<div class="datiOspedale">Pazienti in attesa di visita: 0</div>
</div>
<div class="bloccoOspedale">
<div id="nomeOspedale">
<div class="datiOspedale">Pazienti in corso di visita: 23 di cui in O.B.I.: 0</div>
<div class="datiOspedaleCodici">
<div class="codBianco">Codice bianco:1</div>
<div class="codVerde">Codice verde:9</div>
<div class="codGiallo">Codice giallo:11</div>
<div class="codRosso">Codice rosso:2</div>
</div>
<div class="datiOspedale">Pazienti in attesa di visita: 10</div>
</div>
<div class="bloccoOspedale">
<div id="nomeOspedale">
<div class="datiOspedale">Pazienti in corso di visita: 16 di cui in O.B.I.: 2</div>
<div class="datiOspedaleCodici">
<div class="codBianco">Codice bianco:0</div>
<div class="codVerde">Codice verde:9</div>
<div class="codGiallo">Codice giallo:7</div>
<div class="codRosso">Codice rosso:0</div>
</div>
<div class="datiOspedale">Pazienti in attesa di visita: 6</div>
</div>
.....
.....
.....


and I've to extract the string "Codice bianco:0" using XPath in PHP ...
I've tried

//div[@class="datiOspedaleCodici"]/div[1]/text()


or

//div[@class="datiOspedaleCodici"]/div[@class="codBianco"]/text()


but nothing happens ....

What is the right XPath?

Thank you in advance ...

UPDATE

I've tried to use this PHP code sample ...

<?php
ini_set('display_errors', 1);

$url = 'http://www.asl1.liguria.it/templateProntoSoccorso.asp';

$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_PROXY, '');
$data = curl_exec($ch);
curl_close($ch);

$dom = new DOMDocument();
@$dom->loadHTML($data);

$xpath = new DOMXPath($dom);

$Number = $xpath->query('//div[@class="datiOspedaleCodici"]/div[@class="codBianco"]/text()');

foreach( $Number as $node )
{
echo "Number: " .$node->nodeValue;
echo '<br>';
echo '<br>';
}
?>


... to make clearer what I need ..... the code runs with no errors but nothing is printed ...

Answer Source

Using the fragment of your XML, the following code...

$doc = new SimpleXMLElement ( $xml );
$text = $doc->xpath('//div[@class="datiOspedaleCodici"]/div[@class="codBianco"]/text()');
foreach ( $text as $t ) {
    echo $t.PHP_EOL;
}

Does in fact echo...

Codice bianco:0
Codice bianco:1
Codice bianco:0
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download