我检查每个终端节点的文本。A 标记破坏了文本,因此文本与 /PART/ 不匹配。是否可以移动A标签的位置:
<P><FONT SIZE=3><B>PA<A NAME="name"></A>RT</B></FONT></P>
至
<P><FONT SIZE=3><B><A NAME="name"></A>PART</B></FONT></P>
但是如果 A 标签没有破坏父节点的文本,我将保持原样。
我不知道如何判断标签是否破坏了父节点的文本。
这是我尝试过的代码,不考虑标签是否破坏了文本。
require 'nokogiri'
require 'awesome_print'
html = '<P><FONT SIZE=3><B>PA<A NAME="name"></A>RT II</B></FONT></P>
<P><FONT SIZE=3><B><A NAME="name"></A>PART II</B></FONT></P>'
doc = Nokogiri::HTML(html)
doc.search('a').each do |n|
text = n.parent.text
n.parent.replace n
n.parent.content = text
end
输出
<p><font size="3">PART II</font></p>
<p><font size="3">PART II</font></p>