替换特定的<a> tags?</a>

时间:2013-11-12 10:08:47

标签: ruby xml css-selectors nokogiri

我正在阅读XML文件中的一些内容,其中包含以下链接:

<wcm:root xmlns:wcm="http://www.stellent.com/wcm-data/ns/8.0.0" version="8.0.0.0">
 <wcm:element name="NotesToEditors">
  <a href="ssNODE/something">Something</a>
  <a href="ssNODE/hello">hello</a>
  <a href="https//:www.linkkkk.com">linkkkk</a>
 </wcm:element> 

阅读文件:

page_notes_to_editors = doc.xpath("/wcm:root/wcm:element[@name='NotesToEditors']").inner_text

进行清理:

notes = Nokogiri::XML.fragment(page_notes_to_editors)
notes.css('a[href="ssNODE]')
.each{|a| a.replace("<p>#{a.content}</p>")}

我试图像这样逃避双引号:

notes.css(a["href=\"ssNODE]")

它仍然抱怨。

但是当字符串中包含奇怪的字符时,这不起作用。这是我得到的错误:

`on_error': unexpected '"' after 'equal'

我的期望的结果是将ssNODE个链接转换为保留其文字的段落。

任何人都对如何达到我想要的结果有任何建议?

1 个答案:

答案 0 :(得分:1)

在代码notes.css('a[href="ssNODE]')中,您错过了"。将其写为notes.css('a[href^="ssNODE"]')

此处记录CSS [attribute^=value] Selector

  

[attribute^=value]选择器匹配属性值以指定值开头的每个元素。