0

我检查每个终端节点的文本。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>
4

1 回答 1

1

要将先前的文本移动到 a 的另一侧,您可以执行以下操作:

a.add_next_sibling(a.previous) if a.previous && a.previous.text?
于 2013-02-08T04:04:34.617 回答