2012-01-16 3 views
2

Я пытаюсь разобрать следующий HTML. Мне нужно получить внутренний текст всех ссылок под тегом h4 со значением «Заголовок».Проблемы с получением childNodes с использованием HTMLAgilityPack и XPath

<h4>Title</h4> 
    <ul> 
     <li> 
      <a>One</a> 
     </li> 
     <li> 
      <a>Two</a> 
     </li> 
     <li> 
      <a>Three</a> 
     </li> 
    </ul> 

я могу получить h4 элемент ОК, используя следующий код:

var links = document.DocumentNode.SelectNodes("//h4[contains(text(),'Title')]"); 

Проблема возникает с попыткой получить узлы а. Я попытался следующий код, но ни один не работает:

var urls = member.SelectNodes(".//a"); 

foreach (var url in urls) 
{ 
    Console.WriteLine(url.InnerText); 
} 

ответ

1

Из того, что я могу собрать, я думаю, что он не работает, потому что XPath вы используете ожидая, узлам быть дети вашего h4 узла, я ве не проверял это, и может отсутствовать интерпретации ваших требований, но ...

var links = document.DocumentNode.SelectNodes("//h4[contains(text(),'Title')]/following-sibling::*[1]//a"); 

Это получить все узлы, через которые находятся в первом собрата узла h4. Поэтому в вашем примере HTML он должен получить все узлы в узле ul

Надеюсь, что это поможет

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