2010-10-17 76 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文档的结构时,请务必避免使用//的缩写。