0

HTML Agility Packを使用してhtml(-> xml)ドキュメント(下記)からデータを抽出しようとしています。「div」を含む「id=dealId_*****」は関連性があります。divすべての「」を「」で数える方法を理解するとき、私はどのように進めるかを知っていると思いますid=dealId_*****。XPath-Method " starts-with"を使用してみましたが、機能しませんでした。

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(Sourcecode);

int numberOfDIVs;
numberOfDIVs = doc.DocumentNode.SelectNodes("//*[@id='jLocalDeals']/*[starts-with(@id, 'dealId_']").Count;

    <div id="jLocalDeals" class="dealsBlock" style="">
    <h1>
    <div id="dealId_5474417" class="jDeal LEISURE_OFFERS">
    <div id="dealId_5476688" class="jDeal SHOPPING">
    <div id="dealId_5445019" class="jDeal TICKETS1 RESTAURANT1">
    <div class="wrapper3Deals"></div>
    <div id="dealId_5474286" class="jDeal BEAUTY">
    <div id="dealId_5476685" class="jDeal LEISURE_OFFERS">
    <div id="dealId_5474466" class="jDeal SERVICES">
    <div class="wrapper3Deals"></div>
    <div id="dealId_5466810" class="jDeal BEAUTY">
    <div id="dealId_5425417" class="jDeal SERVICES">
    <div id="dealId_5474329" class="jDeal SHOPPING">
    <div class="wrapper3Deals"></div>
    <div id="dealId_5476703" class="jDeal SHOPPING">
    <div id="dealId_5476729" class="jDeal SHOPPING">
    <div id="dealId_5474702" class="jDeal HEALTHCARE">
    <div class="wrapper3Deals"></div>
    <div id="dealId_5444044" class="jDeal TRAVEL1" style="display: block;">
    <div id="dealId_5474444" class="jDeal LEISURE_OFFERS" style="display: block;">
    <div id="dealId_5473774" class="jDeal TRAVEL1" style="display: block;">
    <div class="wrapper3Deals"></div>
    </div>  

PS:残念ながら私は.NET2.0しか使用できません。

4

1 に答える 1

0

contains() 関数を使用します。

//div[@id='jLocalDeals']//div[contains(@id,'dealId')]

ショートカットが必要な場合は、xpath 内で count() 関数を使用できます。

count(//div[@id='jLocalDeals']//div[contains(@id,'dealId')])

また、 xpath で starts-with が機能しなかった理由は、の子がどこにあるかでは//div[@id='jLocalDeals']なく、の子の ID をチェックしているためです。開始文字の使用:<h1><div id="dealId_****"/>

//div[@id='jLocalDeals']//div[starts-with(@id,'dealId')]

または

//div[@id='jLocalDeals']/*/*[starts-with(@id,'dealId')]

これがお役に立てば幸いです。何か明確にする必要がある場合はお知らせください...

于 2012-05-03T14:18:12.633 に答える