【发布时间】:2015-02-18 11:20:37
【问题描述】:
我有一个如下所示的嵌套 XML 文档:
<?xml version="1.0"?>
<phone>
<name>test</name>
<descr>description</descr>
<empty/>
<lines>
<line>12345</line>
<css/>
</lines>
</phone>
我需要删除所有空的 XML 节点,例如 <empty/> 和 <css/>。
我最终得到了类似的东西:
doc = Nokogiri::XML::DocumentFragment.parse <<-EOXML
<phone>
<name>test</name>
<descr>description</descr>
<empty/>
<lines>
<line>12345</line>
<css/>
</lines>
</phone>
EOXML
phone = doc.css("phone")
phone.children.each do | child |
child.remove if child.inner_text == ''
end
上面的代码只删除了第一个空标签,例如<empty/>。我无法进入嵌套块。我想我需要一些递归策略。我仔细阅读了 Nokogiri 文档并检查了很多示例,但我还没有找到解决方案。
我该如何解决这个问题?
我正在使用 Ruby 1.9.3 和 Nokogiri 1.5.10。
【问题讨论】:
标签: ruby xml recursion nokogiri