0

Ruby を使用した reXml では、特定の要素があり、そのすべての子ノードとテキストを完全に消去したいと考えています。

これを行う方法がわかりません。

これを考えると:

<ug>
  <oog>
    Delete<delete/>all<delete/>this
  </oog>
</ug>

これで終わるために、oogのすべての子を削除したい:

<ug>
  <oog>
  </oog>
</ug>

次を使用してノードを削除できます。

  blah = REXML::Document.new('<ug><oog>Delete<delete/>all<delete/>this</oog></ug>')
  oog = blah.elements['//oog']
  oog.elements.delete_all '*'

  puts blah.to_s

しかし、これはテキストを削除しないので、まだ持っています

<ug>
  <oog>
    Deleteallthis
  </oog>
</ug>

何か案は?

4

1 に答える 1

3

すでに行っていることを試してから、次を追加してください:

while node = oog.get_text
  oog.delete node
end

REXML はテキスト ノードを通常の要素とは異なる方法で扱いますが、これは覚えていないさまざまな理由からです。

于 2010-03-03T09:52:15.703 に答える