2011-06-17 54 views
1

我:的XPath的SelectNodes

<div id="foo"> 
<a href="/xxx.php"> xx </a> 
<a href="/xy.php"> xy </a> 
<a href="/uid.php?id=123"> 123 </a> 
<a href="/uid.php?id=344"> 344 </a> 
</div> 

我怎么只选择含有 'ID' 项目在HREF使用HtmlAgilityPack?

与输出:

<a href="/uid.php?id=123"> 123 </a> 
    <a href="/uid.php?id=344"> 344 </a> 

谢谢,高级。

回答

1

以下xpath表达式应选择包含文本“id”的href标签的所有a元素。

var xpathExpression = "//a[contains(@href, 'id')]"; 

我可以使用下面的代码以选择href属性ID为一个标签:

var htmlDoc = new HtmlAgilityPack.HtmlDocument(); 
htmlDoc.LoadHtml(
    @"<div id=""foo""> 
    <a href=""/xxx.php""> xx </a> 
    <a href=""/xy.php""> xy </a> 
    <a href=""/uid.php?id=123""> 123 </a> 
    <a href=""/uid.php?id=344""> 344 </a> 
</div>"); 
var aTags = htmlDoc.DocumentNode.SelectNodes("//a[contains(@href, 'id')]"); 
foreach(var aTag in aTags) 
Console.WriteLine(aTag.OuterHtml); 
+1

稍微容易些语法:'//一个[含有(@href, 'ID') ]' – Sven 2011-06-17 01:42:08

+0

@Sven:谢谢你的提示,我会更新我的答案。 – rsbarro 2011-06-17 01:45:10

+0

@Sven:正常工作.Tks。:) – 2011-06-17 01:56:28