Reputation: 22264
Here's my code:
CQ dom = CQ.Create(htmlString);
var items = dom[".blog-accordion li"];
foreach (var li in items)
{
var newTournament = false;
var test = li["header h2"];
}
Inside the foreach loop li
turns into a IDomObject
variable and I can no longer drill down further into it.
Any suggestions? Here is the example HTML I'm trying to parse:
<ul>
<li>
<header>
<h2>Test</h2>
</header>
</li>
<li>
<header>
<h2>Test 2</h2>
</header>
</li>
<li>
<header>
<h2>Test 3</h2>
</header>
</li>
</ul>
I need to grab the text of each h2 element.
Upvotes: 5
Views: 6195
Reputation: 276406
This is done in order to keep CsQuery
consistent with jQuery
which behaves the same way. You can convert it back to a CQ
object by calling the .Cq()
method as such
foreach (var li in items)
{
var newTournament = false;
var test = li.Cq().Find("header h2");
}
Or if you'd like more jQuery
ish syntax, the following also works:
foreach (var li in items)
{
var newTournament = false;
var test = CQ.Create(li)["header h2"];
}
Your code, could be re-factored to the following if you'd like:
var texts = CQ.Create(htmlString)[".blog-accordion li header h2"]
.Select(x=>x.Cq().Text());
Upvotes: 13