C#中的html敏捷包问题

时间:2013-07-01 13:55:37

标签: c# asp.net html-agility-pack

我想从这个html获取链接,标题和价格(这是10个结果的结果)

 <div class="listing-item">

        <div class="block item-title">
            <h3 id="title">           
                <span style="direction: ltr" class="title">
                    <a xtcltype="S" xtclib="listing_list_1_title_link" href="http://dubai.dubizzle.com/motors/used-cars/ford/explorer/2013/7/1/ford-explorer-2012-new-model-expat-leaving-2/?back=ZHViYWkuZHViaXp6bGUuY29tL21vdG9ycy91c2VkLWNhcnMv&amp;pos=1">FORD EXPLORER - 2012 - NEW MODEL - EXPAT LEAV...</a>
                </span>
            </h3>
    <div class="price">
                    AED 118,000
                    <br>
            </div>
        </div>

</div>

这是我的代码

 var allCarResults = rootNode.SelectNodes("//div[normalize-space(@class)='listing-item']");
        foreach (var carResult in allCarResults)
        {
            var dataNode = carResult.SelectSingleNode(".//div[@class='block item-title']");
            var carNameNode = dataNode.SelectSingleNode(".//h3/a");
            string carName = carNameNode.InnerText.Trim();
        }

这给我一个对象引用问题来获取carName。我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

dataNode.SelectSingleNode(".//h3/a");尝试直接在<a>下的<h3>下选择dataNode个节点。

但是,在您的情况下,中间有一个<span>。因此,请使用dataNode.SelectSingleNode(".//h3//a");(请注意h3和a之间的//),以便在<a>以下的位置获得<h3>个节点。