假設我有這樣的HTML從源(再殺吧):DOMXPath查詢的動態HTML
<tr class="calendar_row" data-eventid="41675">
<td class="alt2 eventDate smallfont" align="center"/>
<td class="alt2 smallfont" align="center">9:00pm</td>
<td class="alt2 smallfont" align="center">AUD</td>
<td class="alt2 icon smallfont" align="center">
<div class="cal_imp_medium" title="Medium Impact Expected"/>
</td>
<td class="alt2 eventHigh smallfont" align="center">
<div class="calendar_detail level_1" data-level="1" title="Open Detail"/>
</td>
//I want to get this part below correctly
<td class="alt2 pad_left eventHigh smallfont" align="center">0.2%</td>
<td class="alt2 pad_left eventHigh smallfont" align="center"/>
<td class="alt2 pad_left eventHigh smallfont" align="center">
<span class="revised worse" title="Revised From -0.3%">-0.4%</span>
</td>
</tr>
而且我想要得到的值(nodeValues)運輸署通過的XPath:
$query = $xpath->query('//tr[@data-eventid="41675"]/td[@class="alt2 pad_left eventHigh smallfont"]');
我不能弄清楚爲什麼我只能得到值-0.4%。 儘管html看起來很複雜並且沒有被格式化,但是有沒有什麼可能的方式(查詢)來檢索標籤之間的值,包括第二個td上的空值?
全碼
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$query_results = $xpath->query('//tr[@data-eventid="'.$data_eventid.'"]/td[@class="alt2 pad_left eventHigh smallfont"]');
foreach($query_results as $values){
if($values->nodeValue!=' ' and $values->nodeValue!='' and $values->nodeName!='#text') { //Discards Empty Arrays
$table_values[$data_eventid][5] = $values->nodeValue;
}
}
等一下,你會得到* span *?你用什麼來創建該查詢?你在使用simplexml還是其他內置解析器? – Charles
我正在使用xpath query..and yes.i不知道爲什麼它會得到span的值。 – Vainglory07
通過[其中一個**十三個不同的XML擴展**](http://php.net/refs。 XML)? DOM? XMLParser的? SimpleXML的?向我們顯示您用來定義'$ xpath'的代碼。 – Charles