【发布时间】:2011-06-21 19:16:23
【问题描述】:
我使用 CSharp、XPath 和 HTMLAgility Pack。我使用 XPath 字符串,例如:
"//table[3]/td[1]/span[2]/text() | //table[6]/td[1]/span[2]/text()"
"//table[8]/td[1]/span[2]/text() | //table[10]/td[1]/span[2]/text()"
区别仅在于表格编号。是否可以使用其他一些 XPath 函数来替换 XPath 或 |?
我实际做的是:使用第一个 XPath 字符串(我有表号 3 和 6)我提取一个值。使用第二个 XPath 字符串(我的表编号为 8 和 10),我提取了另一个值。
关于性能的其他问题 - XPath 字符串 //table[8]/td[1]/span[2]/text() 是否比 XPath 字符串 OR //table[8]/td[1]/span[2]/text() | //table[10]/td[1]/span[2]/text() 快?我问这个是因为我有很多很多值的很多 XPath 字符串,如果存在差异,这真的意味着我需要尝试别的东西。我现在无法进行测量,所以我问你这个问题是为了分享你的经验。
【问题讨论】:
-
为什么不直接使用 [3|6] 而不是整体 or?
-
@Yet:那甚至都不是有效的 XPath。您只能在两个节点集之间使用 OR,而不是任意表达式。
-
如果 Html 允许,您可以使用其他 XPATH 表达式。可以分享一些 Html 代码吗?
标签: c# xpath html-agility-pack