如何使用XPath获取表格中的上述单元格?
问题描述:
我想把每个单元格的所有信息放在一行中的表格中。我需要弄清楚如何打印表格中每列的标题。如何使用XPath获取表格中的上述单元格?
td, table {
border: 2px black solid;
}
<table>
<tr>
<td>a1</td>
<td>a2</td>
<td>a3</td>
<td>a4</td>
</tr>
<tr>
<td>b1</td>
<td>b2</td>
<td>b3</td>
<td>b4</td>
</tr>
<tr>
<td>c1</td>
<td>c2</td>
<td>c3</td>
<td>c4</td>
</tr>
<tr>
<td>d1</td>
<td>d2</td>
<td>d3</td>
<td>d4</td>
</tr>
</table>
Table 1
+----+----+----+----+
| a1 | a2 | a3 | a4 |
+----+----+----+----+
| b1 | b2 | b3 | b4 |
+----+----+----+----+
| c1 | c2 | c3 | c4 |
+----+----+----+----+
| d1 | d2 | d3 | d4 |
+----+----+----+----+
Table 2
+----+----+----+----+
| e1 | e2 | e3 | e4 |
+----+----+----+----+
| f1 | f2 | f3 | f4 |
+----+----+----+----+
| g1 | g2 | g3 | g4 |
+----+----+----+----+
| h1 | h2 | h3 | h4 |
+----+----+----+----+
And Other Tables ...
我想获得在塔的顶部印有细胞的细胞(即T R [1])。
输出应该不具有第一原始..
第一输出应为:
单元B1具有头A1
..
细胞G2具有标头e2
等等。
我使用xidel:
xidel $site -e "//tr[position()>1]/td/concat('The cell ', ., $codeX)"
的$codeX
值应该是什么?
感谢,
答
要得到表头TEX吨只得到第一个TR数据//tr[1]/td
或//tr[1]/th
如果用于头(预计)
按列文本尝试获得头标记th
此表上的XPath:https://www.w3schools.com/css/tryit.asp?filename=trycss_table_border
//th[count(//tr/td[text()='Griffin'])]
逻辑是:找到的位置使用特定文本//tr/td[text()='Griffin']
,通过使用count()
函数。并找到th
在这个位置
答
Xidel支持XQuery 3.0,因此用于构建任务。
let $rows := //tr,
$header-cells := $rows[1]/td
for $data-row in $rows[position() gt 1]
for $cell at $pos in $data-row/td
return $cell!('cell ' || . || ' has header ' || $header-cells[$pos])
不确定在命令行中该功能是否正常工作,但执行该任务。
如果你想使用第一行,那么听起来好像使用'// tr [1]/td'就是你想要的 –
@MartinHonnen我想从第二行得到它,实际上我使用的是concat( )将它们一起打印。 – user37421