我检查每个终端节点的文本。 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>
答案 0 :(得分:1)
要将前一个文本移动到a的另一侧,您可以执行以下操作:
a.add_next_sibling(a.previous) if a.previous && a.previous.text?