提取第一个 table 的第一行
Extracting the first table's first row
我正在尝试提取已解析 XML 文档中第一个 table (table) 对象的第一 table 行 (tr)。
我认为以下方法可以解决问题:
//table[1]//tr[1]//text()
然而 return 节点太多,例如 this page 我希望 return:
Wikimedia Commons has media related to
Public transport schedules
但是显然不属于第一行的以下节点的文本也是 returns:
<div style="font-size:110%"><a href="/wiki/Public_transport" title="Public transport">Public transport</a></div>
(只出现了文字,但我修补了完整的节点,这样会更容易找到它)
您需要从 TD 而非 tr 中提取文本。
试试这个。
//table[1]//tr[1]//td//text()
这是 //
定义方式的一个微妙之处 - //table[1]
并不意味着 "the first table",而是 "every table that is the first table element in its respective parent"。这同样适用于 tr
步骤 - 您将获得 thead 中的第一行和 tbody 中的第一行。
如果您想要整个文档中第一个 table 的第一行,您需要使用括号:
(//table//tr)[1]
这表示 "find all rows in all tables, then from that list select just the first element in document order"。
我正在尝试提取已解析 XML 文档中第一个 table (table) 对象的第一 table 行 (tr)。
我认为以下方法可以解决问题:
//table[1]//tr[1]//text()
然而 return 节点太多,例如 this page 我希望 return:
Wikimedia Commons has media related to
Public transport schedules
但是显然不属于第一行的以下节点的文本也是 returns:
<div style="font-size:110%"><a href="/wiki/Public_transport" title="Public transport">Public transport</a></div>
(只出现了文字,但我修补了完整的节点,这样会更容易找到它)
您需要从 TD 而非 tr 中提取文本。
试试这个。
//table[1]//tr[1]//td//text()
这是 //
定义方式的一个微妙之处 - //table[1]
并不意味着 "the first table",而是 "every table that is the first table element in its respective parent"。这同样适用于 tr
步骤 - 您将获得 thead 中的第一行和 tbody 中的第一行。
如果您想要整个文档中第一个 table 的第一行,您需要使用括号:
(//table//tr)[1]
这表示 "find all rows in all tables, then from that list select just the first element in document order"。