特殊标记的Xpath表达式

时间:2015-07-20 16:07:17

标签: html regex xpath attributes

我在html中有这些标签,我希望能帮助他们区分它们:

<tr data-row="0" data-row-quote="_" class="  

    even

">

<tr data-row="3" data-row-quote="_" class="sometext 

    odd

">

在上面的标签中,我喜欢包含data-row-quote =&#34; _&#34;以及分隔这两种类型的class属性。

[编辑]

假设我通过使用HttpAgilityPack找到满足建议的xpath查询的tr集合,如下所示:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(res.Html);
HtmlNodeCollection trs = doc.DocumentNode.SelectNodes("//tr[@data-row-quote=\"_\" and not(starts-with(@class, 'sometext'))]"); 

让我们说我对第一个和最后一个节点感兴趣,并希望分别得到他们的tds。我可以这样做:

doc.LoadHtml(trs[0].InnerHtml);
HtmlNodeCollection tds1 = doc.DocumentNode.SelectNodes("//td");
doc.LoadHtml(trs[trs.Count-1].InnerHtml);
HtmlNodeCollection tds2 = doc.DocumentNode.SelectNodes("//td");

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用@data-row-quote@class检查属性值:

//tr[@data-row-quote = "_" and not(contains(@class, "sometext"))]
//tr[@data-row-quote = "_" and contains(@class, "sometext")]