2017-08-15 88 views
0

我有這個HTML代碼....提取的XPath的HTML代碼

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

,我已經提取字符串 「Codice比安科:0」 在PHP中使用XPath ... 我已經試過

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

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

但沒有任何反應....

什麼是正確的XPath?

預先感謝您...

UPDATE

我試圖用這個PHP代碼示例...

<?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>'; 
    }  
?> 

...使更清楚我什麼需要.....代碼運行沒有錯誤,但沒有任何打印...

+1

在Chrome中打開該頁面。打開開發者工具。在源代碼中找到您需要的元素,然後單擊複製xpath。完成 – khuderm

+0

正是我所做的(使用Firefox .....),但它不工作.... – Cesare

回答

1

使用您的XML片段,下面的代碼...

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

事實上確實回聲......

Codice bianco:0 
Codice bianco:1 
Codice bianco:0 
+0

#Nigel我更新了我的原始問題,我用一個小的代碼示例,我用來測試.. ...它看起來與你的非常相似(你使用SimpleXMLElement,我使用DOMXPath,它適用於我的代碼中的sampe「業務案例中的其他案例,所以我不想改變......),但不幸的是我的代碼?打印什麼建議 – Cesare

+1

我只是剪切和粘貼代碼,它給我'編號:Codice比安科:0

編號:Codice比安科:1個

編號:Codice比安科:0

'你可以把' echo「Loaded:」。$ dom-> saveXML();'在你的'loadHTML'行之後,檢查你是否得到了一些輸出結果 –

+0

這就是我想要得到的結果!!! ....很奇怪在我的情況下,它是不工作....無論如何,我知道我的代碼是正確的....謝謝! – Cesare