HtmlAgilityPack屬性。刪除圖像時只刪除一個,當有兩個時

attributes c# html-agility-pack

我在我們的項目中使用HtmlAgilityPack ,以便我可以從我們的另一個系統中顯示一些Html。我在單元測試中遇到了這個問題,並希望確保我沒有做錯。如果我有一個圖像,並且它有2個“src”值,我想選擇一個,將它們全部刪除,然後用正確的路徑添加一個。我不認為我們的Html會發生這種情況,但以防萬一......

所以,這是一個示例圖像標記:

<img align=\"left\" alt=\"\" src=\"/blah.jpg\" src=\"/knowledge/blah.jpg\" border=\"0\" />

這是操縱Html的代碼:

<img align=\"left\" alt=\"\" src=\"/blah.jpg\" src=\"/knowledge/blah.jpg\" border=\"0\" />

當我調試,它到達“image.Attributes.Remove(”src“);”行時,有2個“src”值,如預期的那樣。該行運行後,那裡有1個“src”值,以“/ knowledge”開頭。但是,我希望它們都被刪除,因為Remove的摘要說:

使用名稱從列表中刪除屬性。如果有多個具有此名稱的屬性,則將全部刪除。

我在CodePlex中檢查了HtmlAttributeCollection的源代碼 ,並且Remove方法通過循環來刪除值,所以一切看起來都應該有效。

我使用這個錯誤,還是我找到了在HtmlAgilityPack中提供補丁的機會?

一般承認的答案

已確認: image.Attributes.Remove僅刪除第一個匹配項。

一個快速解決方法是多次調用Remove。如果它被調用並且找不到屬性,則它什麼都不做。

您可能想讓HtmlAgilityPack作者了解這一點。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因