Je suis un peu perplexe sur celui-ci. J'ai un code HTML qui contient une image, suivi d'un texte. Mais j'ai besoin de réorganiser le html pour que l'image arrive en premier - donc image, puis balise h3, puis le texte.Comment extraire une image du HTML et passer devant la balise d'en-tête?
EDIT: La morue ne supprime pas réellement ci-dessous l'attribut de style. Je pensais que ça fonctionnait jusqu'à ce que je regarde de plus près la source html. Donc, j'ai besoin d'aide avec stripping l'attribut style donné
<p>
<img alt="" src="../../../../images/PeterDoocy5.jpg" style="width: 608px; height: 316px;" /></p>
Jusqu'à présent, je suis parvenu à utiliser le PAH pour dépouiller les attributs de style des images dans la page en utilisant:
<Extension()> Public Function RemoveStyleAttributes(input As String)
Dim cleint As New WebClient
Dim html As New HtmlDocument
html.LoadHtml(input)
Dim elementsWithStyleAttribute = html.DocumentNode.SelectNodes("//@img")
If elementsWithStyleAttribute IsNot Nothing Then
For Each element In elementsWithStyleAttribute
element.Attributes("style").Remove()
Next
End If
Return input
End Function
Mais je suis à une perte quant à la façon dont puis tirez mettre l'image et mettre en face de l'étiquette H3.
HTML:
<div class="col-md-6">
<div class="item">
<div class="content galleryItem">
<h3>
DOJ court docs in Abu Khattallah case dispel Obama Admin narrative about the anti-Islam video
</h3>
<p>
<img alt="" class="img-responsive" src="../../../../images/AbuKhattala.jpg" />
</p>
<p>
But it was an awful, disgusting video.....
</p>
</div>
</div>
</div>
La méthode d'extension maintenant:
<Extension()> Public Function RemoveStyleAttributes(html As HtmlDocument)
Dim divs = html.DocumentNode.SelectNodes("//div[@class='content galleryItem']")
For Each div As HtmlNode In divs
'get <img> and remove its style attribute'
Dim img = div.SelectSingleNode("./p/img[@style]")
img.Attributes("style").Remove()
'remove <h3> and <p>text here</p>'
Dim h3 = div.SelectSingleNode("./h3")
h3.Remove()
Dim text = div.SelectSingleNode("./p[not(img)]")
text.Remove()
'add <h3> and <p>text here</p> to the parent again in desired order'
div.AppendChild(h3)
div.AppendChild(text)
Next
Return html.DocumentNode.OuterHtml.ToString
End Function
Toute tentative de l'utiliser comme @ Html.Raw (item.PostSummary.RemoveStyleAttributes)
je l'ai essayé comme méthode d'extension et se référence d'objet non définie à une instance d'un objet. J'ai mon avis j'ai essayé @ Html.Raw (item.PostSummary.RemoveStyleAttributes) mais cela n'a pas fonctionné. Qu'est-ce qui me manque en ce qui concerne l'utilisation comme une méthode d'extension? –
Votre méthode d'extension aurait dû retourné 'html.DocumentNode.OuterElement', au lieu de' l'état brut input' brut ... – har07
Si je reviens html.documentnode.outerhtml il ne semble pas comme une méthode d'extension via IntelliSense. J'ai posté le code dans ma réponse originale pour la méthode d'extension. –