2010-10-17 88 views
2

我試圖拉nobr標籤之間的文本。幫助使用xpath從HTML表中提取文本

這是表的一部分:

 <table class="report-main-table dirLTR NormalTxt" width="100%" border="0" cellspacing="0" cellpadding="0"> 

<thead> 

<tr> 

<td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1505;&#1492;"&#1499; &#1506;&#1500;&#1493;&#1514; &#1489;&#1513;"&#1495;</b></nobr></td><td class="report-data-title-cell report-data-column-even"><nobr><b>&#1497;&#1506;&#1491; &#1492;&#1513;&#1497;&#1495;&#1492;</b></nobr></td><td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1505;&#1493;&#1490; &#1513;&#1497;&#1495;&#1492;</b></nobr></td><td class="report-data-title-cell report-data-column-even"><nobr><b>&#1505;&#1492;"&#1499; &#1494;&#1502;&#1503; &#1488;&#1493;&#1497;&#1512; &#1500;&#1495;&#1497;&#1493;&#1489;</b></nobr></td><td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1492;&#1502;&#1505;&#1508;&#1512; &#1513;&#1495;&#1493;&#1497;&#1490;</b></nobr></td><td class="report-data-title-cell report-data-column-even"><nobr><b>&#1513;&#1506;&#1514; &#1513;&#1497;&#1495;&#1492;</b></nobr></td><td class="report-data-title-cell report-data-column-odd"><nobr><b>&#1514;&#1488;&#1512;&#1497;&#1498; &#1513;&#1497;&#1495;&#1492;</b></nobr></td> 

</tr> 

</thead> 

<tr class="report-data-row-even"> 

<td class="NormalTxt report-data-cell report-data-column-even"><nobr>0.0285</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>&#1508;&#1512;&#1496;&#1504;&#1512;</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>SMS</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>1</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>054-2570130</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>00:14:09</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>27/09/2010</nobr></td> 

</tr> 

<tr class="report-data-row-odd"> 

<td class="NormalTxt report-data-cell report-data-column-even"><nobr>0.0000</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>&#1505;&#1500;&#1511;&#1493;&#1501;</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>SMS</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>1</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>052-3669127</nobr></td><td class="NormalTxt report-data-cell report-data-column-odd"><nobr>00:47:25</nobr></td><td class="NormalTxt report-data-cell report-data-column-even"><nobr>27/09/2010</nobr></td> 

</tr> 

我嘗試這個XPath表達式://表/ TR/TD/NOBR /,但這並沒有工作。

什麼是正確的xpath表達式?

謝謝

+0

好問題,+1。查看我的答案,找到更短且可能更高效的解決方案。 :) – 2010-10-17 15:01:18

回答

0

嘗試//table//td/nobr

編輯:按照要求,這裏是表達式邏輯。

我們正在尋找nobr元素的內部文本(nobr

  • 是內表細胞(td/nobr
  • 是所有表的後代文件(//table//td/nobr在:這裏我們跳過tr元件和theadtbodytfoot元件tabletd元件之間可能發生的。
+0

謝謝,這個作品,你是怎麼得到這個表達的? 邏輯是什麼? – embedded 2010-10-17 11:43:58

0

使用

//nobr 

這可能是更有效的比:

//table//td/nobr 

因爲//縮寫引起植根於當前節點樹的完整的遍歷,我們有//縮寫前一個表達式只有一次,後一個表達式只有兩次。

當您知道XML文檔的結構時,請務必避免使用//的縮寫。