Получить значения тегов htm с помощью HtmlAgilityPack

c# css html html-agility-pack

Вопрос

У меня есть много кода HTML-кода со следующим стилем, мне нужны значения

  1. Значение атрибута src для img
  2. Значение даты
  3. Значение атрибута источника для второго img
  4. Детали

что я указал это число в коде.

Наконец, я хочу поместить все эти значения в файл XML. Не могли бы вы помочь мне в отношении того, как я могу получить эти значения с помощью HtmlAgilityPack?

Заранее спасибо.

<div class="promotion"> 
 <div class="logo">
       <img src='http://www.example.com/D.jpg' **(1)**>         
 </div>
 <div class="details">
    <p class="date"> 2015/12/12 **(2)** </p>
    <p> 
       <img src="http://www.example.com/DDD.jpg" **(3)** alt="" />
       <h3> Some Details **(4)** </h3>
    </p> 
 </div>
</div>

Принятый ответ

Если HTML-код похож на вопрос, вы можете использовать XPath для получения ваших результатов следующим образом:

С предыдущим кодом, подобным этому, например, чтобы протестировать свой HTML-код:

var html = @"<div class='promotion'> 
                     <div class='logo'>
                           <img src='http://www.example.com/D.jpg' **(1)**>         
                     </div>
                     <div class='details'>
                        <p class='date'> 2015/12/12 **(2)** </p>
                        <p> 
                           <img src='http://www.example.com/DDD.jpg' **(3)** alt='' />
                           <h3> Some Details **(4)** </h3>
                        </p> 
                     </div>
                    </div>";

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
  1. Для первого изображения, например, что-то вроде этого:

    var value = doc.DocumentNode.SelectSingleNode("//div[@class='logo']/img").Attributes["src"].Value;
    
  2. Для второго что-то вроде этого:

    var value = doc.DocumentNode.SelectSingleNode("//p[@class='date']").InnerText;
    
  3. Для третьего:

    var value = doc.DocumentNode.SelectSingleNode("//div[@class='details']/p[2]/img").Attributes["src"].Value;
    
  4. И для четверых:

    var value = doc.DocumentNode.SelectSingleNode("//div[@class='details']/p[2]/h3").InnerText;
    

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



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow