我们正试图从一个相当小的错误跟踪系统转移到 Redmine。对于我们的旧系统,没有现成的迁移解决方案脚本可用,所以我们想自己做。
我建议使用 Nokogiri 将一些格式转移到新格式(Textile),但是,我遇到了问题。
这是来自我们旧系统数据库中的数据库字段:
<ul>
<li>list item 1</li>
<li>list item 2</li>
</ul>
这需要翻译成 Textile,它看起来像这样:
* list item 1
* list item 2
现在,开始使用 Nokogiri 解析,我在这里:
def self.handle_ul(page)
uls = page.css("ul")
uls.each {|ul|
lis = ul.css("li")
lis.each { |li|
li.inner_html = "*" << li.text << "\n"
}
}
end
这就像一个魅力。但是,我需要做两个替换:
<li>
</li>
需要从<li>
对象中删除标签,并且:
<ul>
</ul>
标签需要从<ul>
对象中删除。但是,我似乎无法在代表它的对象中找到实际的标签。inner_html
仅返回我要查找的标签之间的 HTML:
ul.inner_html
结果是:
<li>list item 1</li>
<li>list item 2</li>
我在哪里可以找到我需要替换的标签?我考虑过使用parent
子<li>
标签并将其与 重新关联parent.parent
,但这会将它们放在祖父母的末尾。
我可以以某种方式访问对象的整个 HTML 表示,而不剥离其定义标签,以便我可以替换它们吗?
编辑:
根据要求,这是一个旧 DB 条目的模型,以及它应该具有的纺织品风格。
改造前:
Fixed for rev. 1.7.92.
<h4>Problems:</h4>
<ul>
<li>fixed.</li>
<li>fixed. New minimum 270x270</li>
<li>fixed.</li>
<li>fixed.</li>
<li>fixed.</li>
<li>fixed. Column types list is growing horizontally now.</li>
</ul>
改造后:
Fixed for rev. 1.7.92.
h4.Problems:
* fixed.
* fixed. New minimum 270x270
* fixed.
* fixed.
* fixed.
* fixed. Column types list is growing horizontally now.
编辑2:
我试图覆盖to_s
Nokogiri 元素的部分方法:
li.to_s["<li>"]=""
但这似乎不是一个有效的左值(不是说有错误,它只是什么都不做)。