Reputation:
I want to get details,description and posted date in C# via HtmlAgilityPack.
<div id="listing-details">
<div id="listing-details-list">
<h3 class="listing-details-header">
Details: <span>Posted on: 2nd July 2013</span>
</h3>
<ul class="important-fields">
<li class=""><span>Make:</span> <strong>Jeep</strong></li>
<li class=""><span>Model:</span> <strong>Wrangler</strong></li>
</ul>
<ul>
<li><span>Body Condition:</span> <strong>Perfect inside and out</strong></li>
<li><span>Mechanical Condition:</span> <strong>No history </strong></li>
</ul>
</div>
<div class="" id="description-text">
<h3 class="listing-details-header">
Description:
</h3>
<div id="dont_gtrans"></div>
<div class="trans_toggle_box">
<div class="trans_toggle_text" id="trans_toggle_text">
<span style="direction: ltr" class="title">
<p>here is description, ;</p>
</span>
</div>
</div>
</div>
</div>
Here is my code
var rootNode = htmlDoc.DocumentNode;
var dataNode = rootNode.SelectNodes(".//div[@class='listing-details']");
string a = "";
foreach (HtmlNode list in dataNode)
{
var dataNode1 = list.SelectSingleNode(".//div[@class='listing-details-list']");
var carNameNode = dataNode1.SelectSingleNode(".//li/span");
a = a + carNameNode.InnerText;
}
this give me issue of object refrence null on foreach and inside foreach loop
Upvotes: 0
Views: 578
Reputation: 2450
You are looking at the wrong attribute. The divs you are looking for do not have a class = 'listing-details' or 'listing-details-list'. Those are the divs' IDs.
Change your code to check the id attribute instead:
var dataNode = rootNode.SelectNodes(".//div[@id='listing-details']");
and
var dataNode1 = list.SelectSingleNode(".//div[@id='listing-details-list']");
Upvotes: 1