user2244804
user2244804

Reputation:

html agility pack issue with ul in C#

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>&nbsp;<strong>Perfect inside and out</strong></li>
    <li><span>Mechanical Condition:</span>&nbsp;<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

Answers (1)

rikitikitik
rikitikitik

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

Related Questions