gpt4 book ai didi

c# - XPath 或,替代方案

转载 作者:行者123 更新时间:2023-12-02 04:45:45 25 4
gpt4 key购买 nike

我使用 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() 是否比使用 OR 的 XPath 字符串更快 //table[8]/td[1]/span[2]/text() |//表[10]/td[1]/span[2]/text()?我问这个问题是因为我有很多很多值的 XPath 字符串,如果存在差异,这确实意味着我需要尝试其他方法。我现在无法进行测量,所以我问你这个问题来分享你的经验。

最佳答案

首先,//table[6] 看起来很奇怪。您确定您的意思不是 (//table)[6] 吗? (第一个选择作为其父级的第六个子表的每个表;第二个选择文档中的第六个表。)我将假设后者。

在 XPath 2.0 中你可以这样写

(//table)[position()=(3,6,8,10)]/td[1]/span[2]/text()

在 1.0 中,这必须是

(//table)[position()=3 or position()=6 or position()=8 or position()=10]
/td[1]/span[2]/text()

或者(在任一版本中)您可以编写

((//table)[3] | (//table)[6] | (//table)[8] | (//table)[10])/td[1]/span[2]/text()

如果不知道您正在使用什么 XPath 实现,就无法回答您关于性能的问题。

关于c# - XPath 或,替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com