如何用Nokogiri构建XML文档时用破折号替换下划线



我正在使用以下代码构建一个新的XML文档:

doc = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do
  reginfo {
    client_type_id client_type == :associate ? ASSOCIATE : CLIENT 
    parent_ {
      id_ client_type == :associate ? associate_id : customer_id
      client_type_id client_type == :associate ? ASSOCIATE : CLIENT  
      vsn client_type == :associate ? associate_vsn : customer_vsn
    }
  }
end

上面列出的标记client_type_id出现在XML文件中,如client_type_id,但这不是正确的XML标记名称格式。我需要它们是client-type-id

我试着用:

:"client-type-id" client_type == :associate ? ASSOCIATE : CLIENT 

但是我得到:

syntax error, unexpected tIDENTIFIER, expecting '}'
    :"client-type-id" client_type == :associate ? ASSOCIATE : CLIENT 
                                 ^

或:

:"client-type-id" (client_type == :associate ? ASSOCIATE : CLIENT)

但是我得到:

syntax error, unexpected '(', expecting '}'
        :"client-type-id" (client_type == :associate ? ASSOCIATE : CLIENT)
                           ^

有没有办法告诉Nokogiri::XML::Builder:

  1. 在每行的基础上,使用破折号标记名称,它有不同的语法吗?
  2. 对于整个文档,在创建期间或之后,对元素名称中的所有下划线使用破折号,以便它形成格式正确的XML元素名称?

有一种奇特的方法:

Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
  ...
  xml.send :"client-type-id", (client_type == :associate ? ASSOCIATE : CLIENT)
  ...
end

相关内容

  • 没有找到相关文章

最新更新