Obtenir les valeurs des tags HTML avec HtmlAgilityPack

c# css html html-agility-pack

Question

J'ai beaucoup de code de bloc HTML avec le style suivant, j'ai besoin de valeurs de

  1. Valeur de l'attribut src pour img
  2. Date date
  3. Valeur de l'attribut source pour la seconde img
  4. Détails

que j'ai spécifié ces numéros dans un code.

Enfin, je veux mettre toutes ces valeurs dans un fichier XML. Alors, pourriez-vous m'aider à comprendre comment je pourrais obtenir ces valeurs avec HtmlAgilityPack?

Merci d'avance.

<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>

Réponse acceptée

Si votre HTML ressemble à celui que vous avez mis dans votre question, vous pouvez utiliser XPath pour récupérer vos résultats de la manière suivante:

Avec un code précédent comme celui-ci, par exemple pour tester avec votre code 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. Pour la première image, par exemple, quelque chose comme ceci:

    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);
    
  2. Pour le second, quelque chose comme ça:

    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);
    
  3. Pour le troisième:

    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);
    
  4. Et pour les quatre:

    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);
    

J'espère que cela vous aidera.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi