如何从字符串中删除特定的 Img 标签

时间:2021-04-30 21:35:05

标签: html vb.net

使用visual basic

我有一个包含 HTML 的字符串。里面可能有很多 img 标签,但是我想删除一个带有特定 alt 属性的 img 标签。

如果包含 'badImage' 作为 alt 属性,我如何从字符串中删除整个 img 标签?我仍然想保留可能在字符串内的任何其他 img 标签。

Dim myString as string = "<html><body><span>some text here..</span><img src='#' alt='goodImage'/><span>more text...</span><img src='#' alt='badImage'/></body></html>

到目前为止,我有以下代码,但它从字符串中删除了所有 img 标记,而我只想删除带有 'badImage' alt 属性的 img 标记。这可能吗?

Dim imgRegex As New Regex("<img[^>]*>", RegexOptions.IgnoreCase)
myString = myString.Replace(bodyContent, "")

请在VB.Net中回答。感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

希望 html 源代码是格式良好的 html/xml/[任何标记语言],您可以通过使用 XmlDocument 读取源代码来删除坏标签,然后通过“{{1 }}“ 属性。 一点代码演示:

alt

那么:

Function ClearBadImgTags(source As String) As String
    Dim xDoc As XmlDocument = New XmlDocument
    Try

        xDoc.LoadXml(source)
        Dim badImgs As IEnumerable(Of XmlElement) = From el In xDoc.GetElementsByTagName("img")
                                                    Select img = CType(el, XmlElement)
                                                    Where img.HasAttribute("alt") AndAlso img.Attributes("alt").Value = "badImage"

        For i As Integer = 0 To badImgs.Count - 1 : badImgs(i).ParentNode.RemoveChild(badImgs(i)) : Next
        Return xDoc.OuterXml

    Catch ex As Exception
        Stop 'Bad XML or something go wrong
    End Try

    Return ""

End Function