2011-06-17 3 views
1

J'ai: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> 

I comment sélectionnez uniquement les éléments contenant 'id' à l'aide href HtmlAgilityPack?

avec sortie:

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

Merci, Avancé.

Répondre

1

L'expression XPath suivante doit sélectionner tous les éléments a qui ont une étiquette href qui contient le texte « id ».

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

j'ai pu sélectionner les balises avec un identifiant dans l'attribut href en utilisant le code suivant:

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

un peu plus facile syntaxe: '// un [contient (@href, 'id') ] ' – Sven

+0

@Sven: Merci pour le conseil, je vais mettre à jour ma réponse. – rsbarro

+0

@Sven: Works fine.Tks :). –

Questions connexes