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 回答