XPath OR,替代 - c#

我使用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 //table[8]/td[1]/span[2]/text() | //table[10]/td[1]/span[2]/text()的XPath字符串快?我之所以这样问,是因为我有许多许多值的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实现,就无法回答有关性能的问题。

在XPath中,无论有哪个文本子节点,如何通过文本选择节点? - c#

我有一些这样的HTML代码:<table> <tbody> <tr> <td> John <font color="red"> <b>Unemployed</b> </font> <br/>ID 12345<b> som…

在xPath中的innerHTML? - php

有没有一种方法可以检索div元素中包含的HTML(和JavaScript)? 参考方案 我不是PHP开发人员,但发现了这一点:function getNodeInnerHTML(DOMNode $oNode) { $oDom = new DOMDocument(); foreach($oNode->childNode as $oChild) { $oD…

使用精确的字符串作为xpath标识符 - php

我发现我需要使用xpath查询来查找几乎为regexp类型的字符串,但还无法查看如何对其进行管理。我正在使用的当前查询是: $result = $xpath->query('//ul/li[starts-with(@id, "message-")]'); 这导致了一些误报。它确实应该在寻找message-123或…

Xpath表达式获取href。不只是锚文本 - php

尝试使用xpath表达式来学习它。我找到了一个代码段,并对其进行了一些调整。我想做的是获取页面上的每个链接。$baseurl = "http://www.example.com"; $html = file_get_contents($baseurl); $dom = new DOMDocument(); @$dom->loadHT…

需要一种将任何类型的节点从BizTalk规则引擎内部传递给自定义函数的方法 - c#

我正在处理BizTalk应用程序。我已经设置了词汇表,并已开始在规则编辑器中编写规则。评估规则后,我制作了一个名为AddValidationError的函数,该函数将验证错误写入正在验证的XML文档中。从规则的“操作”部分调用AddValidationError方法。我想将正在评估的节点传递给AddValidationError方法,以便我可以确定该节点的X…