2016-11-11 3 views
2

Я пытаюсь захватить текст «Нет записи: 1» и две даты из следующих фрагмент кода HTML:Использование Html Agility пакет, чтобы захватить внутренний текст из определенного узла

<table class="Report"> 
<tbody> 
<tr> 
<td> 
<font><b>Record No: 1</b><br> 
<i>Original Date</i>: 12/16/2011<br> 
<i>Original Entered Date</i>: 12/16/2011 
<br> 
<br> 
</font> 
</td> 
</tr> 
</tbody> 
<table> 

Использование HTMLAgilityPack и следующее код Мне удалось получить номер записи, но я не уверен, как захватить даты.

var recordNum =report.Descendants() 
.Where(a=>a.InnerText.Contains("Record No:")) 
.Where(a => a.Name == "#text") 
.First().InnerText; 

Как-то мне нужно ухватить текст, следующий за узлом «Оригинальная дата».

ответ

0

Как-то мне нужно ухватить текст, следующий за узлом «Оригинальная дата».

Вы можете использовать следующий XPath для выбора текстовых узлов, расположенных после i элемента, в котором внутренний текст равно «Оригинал Дата»:

//i[.='Original Date']/following-sibling::text() 

Используйте XPath, как следует, например:

var doc = new HtmlDocument(); 
.... 
var xpath = "//i[.='Original Date']/following-sibling::text()"; 
var result = doc.DocumentNode.SelectSingleNode(xpath); 
Console.WriteLine(result.InnerText); 

Demo

выход:

: 12/16/2011 
+0

Всегда кажется, чтобы вернуться с нулем. –