1

我想知道是否有可能(当然还有如何)将标签的位置与父标签的内容进行比较。例如:

Case 1: <a>Hello<br/></a>

Case 2: <a><br/>Hello</a>

在这里我想知道 br 是在“br”标签之前还是之后

编辑:我的真正目标实际上是转换:

<a>Hello</a>
<a>World!<br/></a>
<a><br/>I</a>
<a>love</a>
<a>Rails.</a>

进入

Hello World!
I love Rails.

但我当前的代码是这样转换的:

Hello World!
I
love Rails

因为我正在寻找每个“a”标签,如果 br 存在我创建一个新行。

4

1 回答 1

1

children获取时尝试使用a。像这样的东西:

str = '<doc><a>Hello</a>
<a>World!<br/></a>
<a><br/>I</a>
<a>love</a>
<a>Rails.</a></doc>'

doc = Nokogiri::XML.parse(str)
out = ""
doc.css('doc a').each do |block|
  block.children.each do |node|
    if node.element?
      out += "<a></" + node.name + "></a>\n"
    else
      out += "<a>" + node.text + "</a>\n"
    end
  end
end
puts out

输出是:

<a>Hello</a>
<a>World!</a>
<a></br></a>
<a></br></a>
<a>I</a>
<a>love</a>
<a>Rails.</a>

不过,在这种情况下,您应该处理两个 br ......

于 2013-06-19T13:48:14.983 回答