提取第一个表的第一行

时间:2015-04-13 17:25:45

标签: xml xpath xml-parsing

我正在尝试在解析的XML文档中提取第一个表(table)对象的第一个表行(tr)。

我认为以下方法可以解决问题:

//table[1]//tr[1]//text()

然而它返回了太多节点,例如我希望返回this page

Wikimedia Commons has media related to 
Public transport schedules

但是显然不属于第一行的以下节点的文本也会返回:

<div style="font-size:110%"><a href="/wiki/Public_transport" title="Public transport">Public transport</a></div>

(只显示文本我修补整个节点,因此更容易找到它)

2 个答案:

答案 0 :(得分:3)

这是//定义方式的一个微妙之处 - //table[1]并不意味着“第一个表”,而是“每个表都是其各自父级中的第一个表元素”。这同样适用于tr步骤 - 您将获得thead中的第一行和tbody中的第一行。

如果您想要整个文档中第一个表的第一行,则需要使用括号:

(//table//tr)[1]

这表示“查找所有表中的所有行,然后从该列表中选择文档顺序中的第一个元素”。

答案 1 :(得分:0)

您需要从TD中提取文本而不是tr。

试一试。

//table[1]//tr[1]//td//text()