2016-02-17 3 views
-2

У меня есть html и htmlagilitypack с C#. Мне нужно получить значение определенного дочернего узла. Мне нужно получить текст ребенка «strong/em» в html. как я могу его получить?получение значения из определенного дочернего узла

<div id="top3"> 
     <li> February 1, 2016&#58; 
     <a target="_blank" href="test1.html"> 
      <strong> 
       <em>test1</em></strong> 
      </a> 

     <br><strong>desc1</strong></li> 

<li> February 2, 2016&#58; 
     <a target="_blank" href="test2.html"> 
      <strong> 
       <em>test2</em></strong> 
      </a> 

     <br><strong>desc2</strong></li> 

     </div> 
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@id='top3']//li")) 
{      
    sb.Append("<p'>" + node.SelectSingleNode("a[1]/preceding-sibling::text()[1]").InnerText + "</p>"); 
    linkNode = node.SelectSingleNode("a[1]"); 
    sb.Append("<p class='event'><a href='" + linkNode.Attributes["href"].Value + "'>" + 

     //**********Need to have text from /strong/em/ here ********* 

    + "</a></p>"); 
} 

ответ

0

Вы можете получить значение strong/em с помощью простого XPath относительно выбранного <a> элемента, например, так:

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@id='top3']//li")) 
{ 
    ..... 
    linkNode = node.SelectSingleNode("a[1]"); 
    var em = linkNode.SelectSingleNode("strong/em").InnerText; 
    //TODO: use `em` value according to your need : 
    ..... 
} 

Короткое демо здесь: https://dotnetfiddle.net/r49Luk

У вас есть продемонстрировал использование немного более сложных выражений XPath в коде sn ippet опубликовано, поэтому я как бы интересуюсь, почему этот вопрос возник ...

+0

Это сработало. Благодарю. – user2459457

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