使用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>
有什么想法吗?
答案 0 :(得分:3)
尝试做你正在做的事情,然后添加:
while node = oog.get_text
oog.delete node
end
由于各种我不记得的原因,REXML以不同于常规元素的方式处理文本节点。