2013-03-01 83 views
0

我使用HtmlAgilityPack,試圖找到HTML「A」的節點有一個包含某些字符串,在我的情況下,字符串「/組/」 href屬性:XPath的HTML找到節點

HtmlNodeCollection groups = source.DocumentNode.SelectNodes("//a[contains(@href, '/groups/')]"); 

雖然源代碼包含大約20個這樣的節點,我的代碼上面沒有返回,這導致我相信也許我做的不正確。

我正在做的是否正確,如果不是,我該如何選擇具有特定屬性的節點,該節點具有包含特定字符串的值?

+0

請添加要定位的XML – JWiley 2013-03-01 03:31:01

回答

0

你的表情似乎對我來說是正確的。

您不會發布您的源文件(或至少它的一部分)。所以,我會猜測。

事情是,xpath對於不區分大小寫的比較並不酷。如果您有<a>標記,並且href屬性包含例如/Groups//GROUPS/,它將不匹配。有此一workaround

//a[contains(translate(@href, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '/groups/')]

作爲另一種選擇,你可以使用LINQ與StringComparison.OrdinalIgnoreCase

source.DocumentNode.Descendants("a") 
    .Where(a => a.GetAttributeValue("href", string.Empty) 
        .IndexOf("/groups/", StringComparison.OrdinalIgnoreCase) != -1 
);