【问题标题】:Deleting all child nodes and text of an element删除元素的所有子节点和文本
【发布时间】:2010-03-03 00:22:09
【问题描述】:

在使用 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>

有什么想法吗?

【问题讨论】:

    标签: xml ruby rexml


    【解决方案1】:

    尝试做你已经在做的事情,然后添加:

    while node = oog.get_text
      oog.delete node
    end
    

    REXML 将文本节点与常规元素区别对待,原因有多种,我记不得了。

    【讨论】:

    • 太棒了!今晚我回家时会试一试。
    • 是的,做得很好!谢谢。顺便说一句..我不得不编辑你的答案,因为由于某种原因它没有让我投票,除非答案被编辑..不知道为什么,但无论如何我只是在 : 之后放了一个空格!在我的眼中,你应该得到很多支持!!!
    猜你喜欢
    • 1970-01-01
    • 2021-12-04
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    相关资源
    最近更新 更多