3

特定の子を持たないノードを削除したいと思います。

<release>たとえば、ここで 2 番目のノードを削除したいと思います。

<release>
 <artist>Johnny Cash</artist>
 <album>Live from Folsom Prison</album>
</release>
<release>
 <artist>Johnny Cash</artist>
</release>

私は試しました: doc.xpath("//Release[album='']").remove、しかし、空の場所ではなく、アルバムが存在しないノードを見つける必要があるため、明らかにうまくいきません。

必要な代替手段は、このコマンドを実行したときにアルバムが含まれていないノードに対して「空」のようなものを返すことですalbums= doc.search('release/album').map{ |t| t.text}

4

2 に答える 2

3

あなたがするだろう:

doc.xpath('//release[not(album)]').remove
于 2013-04-17T23:47:36.823 に答える
-1
doc = Nokogiri::HTML::DocumentFragment.parse(html)
node_set = doc.search('release')
del_node = node_set.select { |n| n.last_element_child.name != 'album'}.first
node_set.delete(del_node)

また

doc = Nokogiri::HTML(html)
doc.xpath('//release').delete(doc.xpath('//release').last)
于 2013-04-18T06:26:47.083 に答える