Cesare
Cesare

Reputation: 1749

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 ...

Upvotes: 0

Views: 1327

Answers (1)

Nigel Ren
Nigel Ren

Reputation: 57131

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

Upvotes: 1

Related Questions