我想知道是否可以(以及当然如何)将标记的位置与父标记的内容进行比较。 例如:
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”标签,如果存在,我会创建一个新行。
答案 0 :(得分: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>
在这种情况下,你应该应对两个兄弟......