我正在使用XPath从HTML中提取表格。我有一个独特的情况,我只知道我的一半元素属性值,并试图写一个xpath表达式来找到我知道的一半,忽略其余的。例如
HtmlNodeCollection cols = doc.DocumentNode.SelectNodes("//td[@class='Iknowthis_DontKnowThis']");
在看了w3学校之后,我看到有选择未知节点的外卡操作员但我找不到任何说明如何在这种情况下使用它们。
我尝试了类似的东西,但无法解决任何问题:
doc.DocumentNode.SelectNodes("//td[@class='Iknowthis_.*']");
也许它不可能?我不确定?
答案 0 :(得分:1)
我已经多次访问w3schools xpath docs,我认为你不能使用通配符进行子串匹配(同时测试谓词中的相等性)。
您可以使用部分string functions string functions。 E.g:
"//td[starts-with(@class,'Iknowthis_')]"
您可能需要在starts-with
函数前加上一个名称空间(例如fn:starts-with
),这取决于实现。
还有一个matches
字符串函数,它采用模式。
答案 1 :(得分:0)
可能你可以使用'contains()'函数:
//td[contains(@class, 'Iknowthis')]
你也可以使用'not()'函数来排除smth:
//td[not(contains(@class, 'Iknowthis'))]