ruby – 如何用Nokogiri让空标签自动关闭?

我在ERB中创建了一个 XML模板.我在导出过程中用数据库中的数据填充它.

在某些情况下,有一个空值,在这种情况下元素可能为空,如下所示:

<someitem>

</someitem>

在这种情况下,接收导出的客户端希望将其转换为自闭合标记

<someitem/>

我试图看看如何让Nokogiri这样做,但我还没有看到它.有人知道如何使Nokogiri自动关闭空XML标签吗?

更新

正则表达式足以完成我上面指定的操作,但客户端现在也希望其子项全部为空的标记可以自动关闭.所以这:

<someitem>
  <subitem>

  </subitem>
  <subitem>

  </subitem>
</someitem>

……也应该

<someitem/>

我认为这需要使用Nokogiri.

解决方法

搜索

<([^>]+)>\s*</\1>

并替换为

<\1/>

在Ruby中:

result = subject.gsub(/<([^>]+)>\s*<\/\1>/,'<\1/>')

说明:

<       # Match opening bracket
(       # Match and remember...
 [^>]+  # One or more characters except >
)       # End of capturing group
>       # Match closing bracket
\s*     # Match optional whitespace & newlines
<       # Match opening bracket
/       # Match /
\1      # Match the contents of the opening tag
>       # Match closing bracket

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...