Próbuję zbudować prostą wyszukiwarkę przy użyciu HtmlAgilityPack i Xpath z C# (.NET 4). Chcę znaleźć każdy węzeł zawierający słowo wyszukiwania zdefiniowane przez użytkownika, ale nie mogę uzyskać poprawności XPath. Dla przykładu:Używanie Xpath i HtmlAgilityPack do znajdowania wszystkich elementów z innertextem zawierającym określone słowo lub słowa
<HTML>
<BODY>
<H1>Mr T for president</H1>
<div>We believe the new president should be</div>
<div>the awsome Mr T</div>
<div>
<H2>Mr T replies:</H2>
<p>I pity the fool who doesn't vote</p>
<p>for Mr T</p>
</div>
</BODY>
</HTML>
Jeśli określony Searchword jest "Mr T" chciałbym następujące węzły: <H1>
, drugi <div>
, <H2>
a drugi <p>
. Próbowałem wielu wariantów doc.DocumentNode.SelectNodes("//text()[contains(., "+ searchword +")]");
, ale zawsze wydaje mi się, że skończyć z każdym węzłem w całym DOM.
Wszelkie sugestie, jak dotrzeć we właściwym kierunku, będą bardzo cenne.
Twój drugi wyrażenie pasuje dokładnie to, co PO mówi on próbował (z wyjątkiem dodatkowego '..'), więc nie jestem pewien, dlaczego on uważa, że to nie działa. –
@lwburk: To "nie działało, ponieważ wybiera * węzły tekstowe * i potrzebuje swoich rodziców –
Dobrze, rozumiem, ale z pewnością nie wybiera *" każdego węzła w całym DOM "* (jak twierdził) –