我在ERB中创建了一个XML模板.我在导出过程中用数据库中的数据填充它.
在某些情况下,有一个空值,在这种情况下元素可能为空,如下所示:
<someitem>
</someitem>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,接收导出的客户端希望将其转换为自闭合标记:
<someitem/>
Run Code Online (Sandbox Code Playgroud)
我试图看看如何让Nokogiri这样做,但我还没有看到它.有人知道如何使Nokogiri自动关闭空XML标签吗?
正则表达式足以完成我上面指定的操作,但客户端现在也希望其子项全部为空的标记可以自动关闭.所以这:
<someitem>
<subitem>
</subitem>
<subitem>
</subitem>
</someitem>
Run Code Online (Sandbox Code Playgroud)
......也应该
<someitem/>
Run Code Online (Sandbox Code Playgroud)
我认为这需要使用Nokogiri.
搜索
<([^>]+)>\s*</\1>
Run Code Online (Sandbox Code Playgroud)
并替换为
<\1/>
Run Code Online (Sandbox Code Playgroud)
在Ruby中:
result = subject.gsub(/<([^>]+)>\s*<\/\1>/, '<\1/>')
Run Code Online (Sandbox Code Playgroud)
说明:
< # 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1562 次 |
最近记录: |