HtmlAgilityPack, l'utilizzo di XPath contiene metodi e predicati

contains html-agility-pack xpath

Domanda

HtmlAgilityPack, utilizzando XPath contiene il metodo

Sto usando HtmlAgilityPack e ho bisogno di sapere se un attributo di classe contiene una parola specifica, ora ho questa pagina:

<div class="yom-mod yom-art-content "><div class="bd">
<p class="first"> ....................
  </p>
</div>
</div>

Lo sto facendo:

<div class="yom-mod yom-art-content "><div class="bd">
<p class="first"> ....................
  </p>
</div>
</div>

Ma è troppo specifico di cui ho bisogno è qualcosa del genere:

<div class="yom-mod yom-art-content "><div class="bd">
<p class="first"> ....................
  </p>
</div>
</div>

Ma non funziona, per favore aiutami ..

Risposta accettata

Forse il problema è semplicemente che ti manca la parentesi chiusa sulla funzione contains ():

//div[contains(@class, 'yom-art-content']//p
                                        v
//div[contains(@class, 'yom-art-content')]//p


List<string> paragraphs = 
        doc2.DocumentNode.SelectNodes("//div[contains(@class, 'yom-art-content')]//p")
            .Select(paragraphNode => paragraphNode.InnerHtml).ToList();

Come suggerimento generale, per favore spiega cosa intendi quando dici cose come "non ha funzionato". Sospetto che tu stia ricevendo un messaggio di errore che potrebbe aiutarti a rintracciare il problema?


Risposta popolare

Invece di usare l'HAP per questo, guarda in CsQuery che fornisce i selettori di stile jQuery.

Sembra particolarmente adatto per quello che stai cercando di fare.

CsQuery è una porta jQuery per .NET 4. Implementa tutti i selettori CSS2 e CSS3, tutti i metodi di manipolazione DOM di jQuery e alcuni dei metodi di utilità. La maggior parte della suite di test jQuery (dalla versione 1.6.2) è stata trasferita su C #.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché