2017-06-14 76 views
0

我有以下的HTMLHTMLAgilityPack的XPath需要

<td> 
<input type="button" /> 
</td> 
<td> 
<a href="somelink">blah blah shared</a> 
<a href="somelink"></a> 
<a href="somelink">blah blah post</a> 
</td> 
<td> 
<a href="somelink">blah blah </a> 
<a href="somelink">some text</a> 
<a href="somelink">more text</a> 
</td> 

现在。我需要的XPath返回包含“TD”元素“A”的标签包含字“后”和“共享”

我认为它有类似 // tr [td [1] [。 ='post']]

+0

你有什么试过?你显示的xpath有什么功能? – CodeCaster

回答

2

您可以通过使用以下代码获取该标记,无论在哪个位置或节点单词“post”或“shared”来,它都会得到该节点。

IEnumerable<HtmlAgilityPack.HtmlNode> nodes = doc.DocumentNode.SelectNodes("//td/a[@href]") 
               .Where(x => x.InnerText.Contains("post") || x.InnerText.Contains("shared")); 

它是测试代码,它与给定的html一起工作。

+0

必须对实际的HTML进行一些更改,但这使我走上了正确的道路 – Eminem

0

您可以选择完全在一个XPath:

//td[contains(a,'shared') and contains(a,'post')] 

将选择所有td元素与a孩子包含"shared"a孩子包含"post"。请注意,目标字符串可能会出现在相同或不同的a元素中。