2016-05-20 2 views
0

Я должен разобрать HTML как это:CsQuery - найти элемент с конкретным именем

<div class="navig-nav"> 
    <ul class="navig" id="navigmenu"> 
    <li class="navig-expanded navig-selected">Company</li> 
    <li class="navig-sub"><div>Summary</div></li> 
    <li class="navig-sub"><a href="any_url_1">Some</a></li> 
    <li class="navig-sub"><a href="any_url_2">Interesting</a></li> 
    <li class="navig-sub"><a href="any_url_3">Information</a></li> 
    <li class="navig-item"><a href="any_url_4"><div>From</div></a></li> 
    <li class="navig-item"><a href="any_url_5"><div>Web</div></a></li> 
    <li class="navig-item"><a href="any_url_6"><div>Page</div></a></li> 
    </ul> 
</div> 

В этом меню (как вы можете видеть) все классы имеет более одного ребенка. Как я могу получить «any_url_2», используя csQuery, если у меня есть только имя «Interesting»?

ответ

0

насчет

dom["a:contains('Interesting')"]; 

Ну вот более полный запрос:

CQ dom = "your html here"; 
var result = dom["a[href='any_url_2']:contains('Interesting')"]; 
if (result.Length == 1) 
{ 
    Console.WriteLine(result[0].Attributes["href"]); 
} 
+0

Html может быть намного дольше. И я должен быть уверен, что я нахожу именно href «any_url_2» и не найти текст со словом «Интересно» внутри –

+0

Хорошо, спасибо. Но что мне делать, если я не знаю точного URL-адреса и хочу его найти? Просто используйте простой первый ответ? –

+0

Вы можете точно описать то, что знаете и что именно ищете? В своем первоначальном вопросе вы заявили, что знаете только строку «Интересно», и вы ищете URL-адрес A, который содержит его. – kagelos

0

Является ли это:

dom[".navig-sub"].Find("a:contains('Interesting')") 

хороший ответ?

Смежные вопросы