用 Nokogiri 替换 <a>

Replacing <a> with Nokogiri

我正在使用 Nokogiri 扫描文档并删除作为附件存储的特定文件。但是我想指出,该值已在线删除。

例如。

<a href="...">File Download</a>

转换为:

File Removed

这是我尝试过的:

@doc = Nokogiri::HTML(html).to_html
@doc.search('a').each do |attachment|
    attachment.remove
    attachment.content = "REMOVED"

    # ALSO TRIED:
    attachment.content = "REMOVED"
end

第二个确实替换了锚文本,但保留了 href,用户仍然可以下载该值。

如何替换锚值并将其更改为具有新字符串的

使用 create_element and replace 的组合来实现。找到下面的内联评论。

html = '<a href="...">File Download</a>'
dom = Nokogiri::HTML(html) # parse with nokogiri
dom.to_s # original content
#=> "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body><a href=\"...\">File Download</a></body></html>\n"

# scan the dom for hyperlinks
dom.css('a').each do |a|
  node = dom.create_element 'p' # create paragraph element
  node.inner_html = "REMOVED" # add content you want
  a.replace node # replace found link with paragraph
end
dom.to_s # modified html
#=> "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body><p>REMOVED</p></body></html>\n"

希望对您有所帮助