2017-05-04 79 views
1

我有1000多個包含html圖像標籤的數據庫條目。替換html圖像標籤內的屬性

問題是,'src'屬性的90%只是佔位符。我需要用適當的真實來源替換所有這些佔位符。

一個典型的數據庫條目看起來像這樣(圖像標記的量而改變從輸入到輸入):

<p>A monster rushes at you!</p> 
Monster:<p><img id="d8fh4-gfkj3" src="(image_placeholder)" /></p> 
<br /> 
Treasure: <p><img id="x23zo-115a9" src="(image_placeholder)" /></p> 
Please select your action below: 
</br /> 

使用在上面的圖像標籤的ID,「d8fh4-gfkj3」 &「x23zo-115a9 ',我可以查詢另一個函數來獲取這些圖像的「真實」來源。

所以我嘗試使用HtmlAgilityPack以及與此(下)想出了:

Dim doc As New HtmlDocument() 
    doc.LoadHtml(encounterText) 

    For Each imgTag As HtmlNode In doc.DocumentNode.SelectNodes("//img") 
     'get the ID 
     Dim imgId As HtmlAttribute = imgTag.Attributes("id") 
     Dim imageId As String = imgId.Value 

     'get the new/real path 
     Dim newPath = getMediaPath(imageId) 
     Dim imgSrc As HtmlAttribute = imgTag.Attributes("src") 

     'check to see if the <img> tag "src" attribute has a placeholder 
     If imgSrc.Value.Contains("(image_placeholder)") Then 
      'replace old image src attribute with 'src=newPath' 
     End If 
    Next 

但我無法弄清楚如何真正用新值替換舊值。

有沒有辦法用HtmlAgilityPack做到這一點?

謝謝!

回答

1

你應該能夠只設置該屬性的值:

doc.DocumentNode.OuterHtml 

'check to see if the <img> tag "src" attribute has a placeholder 
If imgSrc.Value.Contains("(image_placeholder)") Then 
    'replace old image src attribute with 'src=newPath' 
    imgSrc.Value = newPath 
End If 

更換後,您可以獲取更新的HTML