Comment obtenir le tag src à partir d'une image?

c# html-agility-pack xml xpath

Question

J'essaie d'obtenir la propriété src à partir d'une balise img . Le problème est que je n'ai pas de src de l'image, mais une chaîne vide. Au lieu de cela, si je supprime //img/@src je vois le contenu d' a balise (image). Quel est le problème? J'ai vu une autre question similaire, mais aucune solution ne fonctionnait pour moi.

<div class="clearfix">
  <div class="container left">    
     <div class="logo">
        <a href="/teams/japan/japan/1348/">
        <img src="http://cache.images.core.optasports.com/soccer/teams/150x150/1348.png" alt="Giappone">
       </a>
     </div>
</div>

c'est mon code:

var shieldHomeContainer = nodeCollection.SelectSingleNode("//div[@class='container left']//div[@class='logo']//a//img/@src");

Réponse acceptée

essayez quelque chose comme ça

var shieldHomeContainer = nodeCollection.SelectSingleNode("//img").Attributes["src"].Value;

Réponse populaire

Vous ne pouvez pas sélectionner un attribut directement. Vous devez sélectionner un élément, puis appeler GetAttributeValue() .

var h=new HtmlAgilityPack.HtmlDocument();
h.LoadHtml(@"
<div class=""clearfix"">
  <div class=""container left"">    
     <div class=""logo"">
        <a href = ""/teams/japan/japan/1348/"" >
        <img src=""something"" alt=""Giappone"">
       </a>
     </div>
</div>");
var img = h.DocumentNode.SelectSingleNode(
 "//div[@class='container left']//div[@class='logo']//a//img");
Debug.WriteLine(img.GetAttributeValue("src","nothing"));

Si vous voulez vous assurer que l'élément possède cet attribut, utilisez img[@src] .




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